问题标签 [pbkdf2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 带有 SHA256 的 PBKDF2 在 android 上
我想使用带有 SHA256 的 PBKDF2 生成密码的派生哈希。有了这个SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1")
工作,但它使用 SHA1。使用SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")
(或SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256","SC")
使用 spongycastle 时)我有一个错误。
如何使用 PBKDF2WithHmacSHA256 成功生成哈希?
java - PBKDF2,来自 C# 的 Java 实现
试图获得 PBKDF2 的 java 实现,我用它作为我的 C# 版本:https ://github.com/shawnmclean/SimpleCrypto.net
我的代码:
我在stackoverflow上尝试了各种答案:
用于加密/解密的 Java SimpleCrypto 类在 Coldfusion 9 和 Java (Android) 中产生不同的结果
Java - 使用 HMACSHA256 作为 PRF 的 PBKDF2
不幸的是结果不匹配,结果应该是:
mOs/Mw7ZRM99i/BTJ+xnmj5Pm6QlqP1vuPqrf/Qa3WwassxI1QJ447OqdoBzunbJjvrx7+bHAO1Dnj8ltS4TKA==
c++ - CAPI 不支持基于密码的加密 (PBE) 加密吗?
我正在尝试将使用 OpenSSL(PKCS#5 和 PKCS#7)的 UNIX 代码移植到 Windows。
在 OpenSSL 的情况下,所有的编码/解码(证书或密码)都对函数 CMS_Encrypt中的调用者透明地完成,这是应该的。
在函数CryptEncryptMessage中基于证书的加密的情况下,CAPI 执行相同的操作 (不会向调用者透露 ASN 详细信息)。经过一番谷歌搜索,我发现了以下密钥生成实现。现在我应该如何在 CAPI 中使用它?
因为 CAPI 不支持高级别的 PBE 加密(PBKDF2),所以我的猜测是必须手动完成编码(不知何故?)。手动是指编写(和读取)各种 ASN 标签的二进制表示。我该怎么做?
我无法访问msasn1.h API,因为 msasn1.lib 从未分发过。除了基于证书的加密之外,有没有人能够使用 CAPI 接口做其他事情?
hash - 将 BCrypt 与另一种哈希算法相结合
我们目前正在加强我们的密码保护。我们一直在对 SHA-2、Bcrypt、PBKDF2 和 Scrypt 进行大量阅读。话虽如此,我们不是安全专家或密码学家,主题的许多技术方面都超出了我们的想象。
在这一点上,我们倾向于实现 PBKDF2 或 Bcrypt。
但是,我们很好奇将 SHA-2 算法与 Bcrypt 结合使用是否有好处(看来 PBKDF2 已经必须指定散列算法)。我们看过帖子:
但这实际上更多是关于同时使用 Bcrypt 和 PBKDF2,而不是 SHA-2。
使用 Bcrypt 的 SHA-2 算法有什么好处?还是因为实际安全性没有明显提高而浪费了精力/性能?
提前感谢任何人可以提供的任何见解。
pbr
php - 如何正确存储 PBKDF2 密码哈希
我一直在研究散列/加密密码并将其存储在数据库中的正确方法。我知道 Salt 和 Hashing,所以我环顾四周,PBKDF2 似乎是一个不错的选择。所以我找到了这个网站,它提供了一个很好的教程以及 PBKDF2 的 PHP 改编版(这是我在我的网站上使用的)。
因此,我设置了我的网站以使用这些功能来生成/创建密码,但正如您在以下代码中看到的那样:
salt 在 create_hash 函数中生成,并存储在生成的哈希中,最终看起来像 sha256:1000:salt:hashed_password。这是我必须存储在数据库中的内容,并且由于盐包含在生成的哈希中,因此我不需要将其添加到我的数据库中。然而,在用这个生成了一些测试用户之后,我想知道在我的数据库中的哈希密码中包含 PBKDF2 设置是否真的是一件好事。他们让我的新手看到它是一个黑客,在破解我的数据库后,会看到这些 sha256:1000:salt:password 东西,并弄清楚每个部分代表什么,这对他的尝试有很大帮助,不?
因此,我对其进行了一些修改,使其具有一个我生成并存储在我的数据库中的外部盐,并在通过 PBKDF2 运行它之前将盐包含在密码中。然后我做同样的事情来比较给定的密码和我在我的数据库中的登录密码,它可以工作。我唯一担心的是,使用 128 位盐,生成的密码哈希只有 50 个字符长,这对我来说似乎不正确。
这是我当前的代码:
我对这种密码保存格式的关注有意义吗?或者它是否只是同样的事情,因为通过将我的盐放在我的数据库中,一旦它被破解,黑客仍然可以暴力破解?
谢谢,很抱歉这个长问题。
django - 未找到哈希
我正在尝试在 django 1.4 中使用不同的哈希器。我的应用程序“帐户”中有一个哈希文件“hashers.py”,
我添加到设置中,
我得到以下异常值,
异常值:
未找到哈希:accounts.hashers.SHA512PasswordHasher
另外,如果我没有
从 pbkdf2 导入 pbkdf2
我收到以下错误,
异常值:
未知密码散列算法“pbkdf2_sha256”。您是否在 PASSWORD_HASHERS 设置中指定了它?
即使我在主 django 库中使用任何已经编写好的哈希。可能是一个错误?
无论如何,为什么找不到我的新哈希器。我遵循了 django 文档中所写的内容。 https://docs.djangoproject.com/en/dev/topics/auth/
python - pbkdf2 和哈希比较
我使用 mitsuhiko 的 pbkdf2 实现进行密码散列:
此函数返回二进制摘要,然后将其编码为 base64 并保存到数据库。此外,当用户登录时,该 base64 字符串被设置为 cookie。
此函数用于密码哈希比较:
我想知道二进制哈希和base64字符串在安全性方面的比较是否有任何区别?例如,当用户登录时,我计算提交密码的二进制摘要,从数据库中解码 base64 字符串,然后比较两个二进制哈希,但如果用户有一个带有 base64 字符串的 cookie,我直接将它与来自的字符串进行比较数据库。
第二个问题是关于盐的:
os.urandom 返回二进制字符串,但在它用于哈希生成之前,我还将它编码为 base64。有什么理由我不应该这样做并以二进制形式使用盐吗?
php - Using mcrypt_create_iv on PHP IIS
I'm trying to set up password salting on our website, and found the PBKDF2 functions at https://defuse.ca/php-pbkdf2.htm
When I try it, I get:
Fatal error: mcrypt_create_iv(): Could not gather sufficient random data in include\PBKDF2.php on line 23
I'm not sure if I need to do anything to make this work. It's running on IIS7.5
php - 什么是合适的 PBKDF2 设置?
关于什么是合适的 PBKDF2 设置,我有几个问题。我用谷歌搜索答案,结果大多是空手而归。
基本上,我想知道考虑到 2012 年的技术状况,输入 pbkdf2.php(在此处找到)的合适值是什么。什么会给我一个合理的期望,即我编码的密码不会被非政府实体破解未来几年?
这是我正在考虑的:
我知道还有许多其他因素可以发挥作用来创造良好的安全性。以下是我正在使用的其他安全措施的概要:
- 12位密码,至少有2个数字、2个字母和2个符号
- 要求每 6 个月更改一次密码
- php mysqli 为所有数据库访问准备语句
- 我所有表格上的标记
- 错误登录延迟 5 秒,
- 同一 IP 10 次错误登录后列入黑名单
- 不正确的登录和黑名单触发相同的响应
- HTTPS
- 我正在使用会话,每次访问页面时,我都会每 10 页和敏感页面上更改会话标识符。
我错过了什么吗?
hash - pbkdf2 密钥长度
PBKDF2中的 $key_length 是多少
它说它将从输入中派生,但我看到人们使用 256 或更大的 key_lengths,但是当我输入 256 作为 key_length 时,输出是 512 个字符。这是故意的吗?我可以安全地使用 64 作为 key_length 输出长度为 128 个字符吗?