问题标签 [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.

0 投票
2 回答
219 浏览

python - CCKeyDerivationPBKDF 线程安全吗?

CCKeyDerivationPBKDF用来在并发环境中生成和验证密码哈希,我想知道它是否是线程安全的。该函数的文档根本没有提到线程安全,所以我目前使用锁是为了安全起见,但如果我不需要,我宁愿不使用锁。

0 投票
1 回答
2040 浏览

delphi - 在 Delphi 中实现 PBKDF2?

如何在 Delphi 中使用此算法?德尔福有这样的课程吗?

谢谢你。

0 投票
2 回答
3698 浏览

javascript - crypto.pbkdf2 是异步的,如何将其视为同步?

我在 node.js 中使用 pbkdf2 来散列密码。

我的问题是我正在响应身份验证请求,并且我正在验证传递的凭据是否正确。我假设 pbkdf2 是异步的,因为它可能需要大量时间(取决于迭代的大小)。然而,将剩余的身份验证逻辑移动到一个单独的方法中以利用回调似乎有点难看。

有没有比使用计时器或将所有连续的身份验证逻辑放入单独的函数更好的方法?我知道大多数人会说我应该使用回调,但在我的用例中这没有任何意义。在将 pbkdf2 应用于传递的密码之前,我无法继续进行身份验证。

0 投票
1 回答
1453 浏览

cryptography - 使用 HMAC SHA-1 的 PBKDF2 如何返回超过 20 个字节?

如果 Nodecrypto.PBKDF2使用 HMAC SHA-1,密钥长度怎么可能超过 20 个字节?

这是我的理解(显然不正确):crypto.PBKDF2(password, salt, iterations, keylen, callback)使用 HMAC SHA-1 用盐对密码进行哈希处理。然后它采用该散列并相同的盐对其进行散列。无论您告诉它多少次迭代,它都会重复,然后将结果传回给您。结果被截断为您在 中指定的字节数keylen

SHA-1 输出 160 位或 20 字节。但是,我可以从 请求keylen超过 20 个字节crypto.PBKDF2,并且超过第 20 个字节,数据不会重复。这对我来说没有意义。

我在这里有什么误解?

试试看:

我希望在第 20 个字节之后看到某种模式,但我没有。

0 投票
0 回答
656 浏览

c#-4.0 - 如何在 C# 中检索哈希密码?

检索/重置密码/忘记密码的正确方法是什么?

我在 Rfc2898DeriveBytes 类中使用了基于密码的密钥派生函数 2 (PBKDF2)。

那么重置哈希密码的方法是什么。

0 投票
1 回答
3188 浏览

php - 基本的 php pbkdf2 散列

我对 php 比较陌生,并且刚刚开始掌握哈希密码的重点(我认为?)。无论如何,这是我的问题......

现在我有一个带有用户名、密码、盐字段的 mysql 数据库。密码字段长度为 64 个字符,盐字段长度为 3 个字符。在注册时,每个用户名都被分配一个随机盐。我对此没有任何问题(我相信)。首先,用户所需的密码通过以下方式进行哈希处理:

然后通过以下过程使用 pbkdf2 中包含的 salt 对用户所需的密码进行哈希处理,并将其输入数据库:

我的问题是登录。将数据库中的哈希密码与用户输入的密码进行比较时,它总是回来!=。这是我验证登录的方法:

所以,为了排除故障,我回显了所有输出,这就是我输入正确密码时的样子(它没有让我登录):

输入密码:3d8bc905668c1a1cca5b53a78941d3ca4673e12df6ac5e98e19fa47b153406f6e66913e43bf60478907ca07429b0cf90c808ce2097e0544cc44d298bfb7b85ad

数据库密码:3d8bc905668c1a1cca5b53a78941d3ca4673e12df6ac5e98e19fa47b153406f6

请注意,输入密码的前 64 个字符是正确的,但它会继续输入 128 个字符。DB密码只有64。

提前谢谢!

0 投票
1 回答
1419 浏览

c++ - 密码基础加密 OpenSSL C++

我在一个团队中创建用于医疗环境的应用程序。我们希望根据存储在 SQLite 数据库中的密码(散列和加盐)存储使用 AES 加密的本地数据。似乎没有太多关于这样做的信息。我错过了一个技巧吗?

编辑:

由于我似乎被否决了,这是我已经知道的一些内容。

我假设我需要使用 PBKDF2 密钥派生(见 SO here)。然后我需要按照这个答案做一些事情。我的问题是所有这些都是 C 代码,它没有利用 C++ 的任何 OOP 细节。我希望我缺少一些用于 OpenSSL 的不错的 C++ 包装器或其他一些我可以用来编写干净、可读和 OO 代码来解决问题的第 3 方库。

PS 我没有为这个应用程序付费,因为它是 Uni 的一个软件工程项目,并且该软件的接收者是一个慈善机构。

0 投票
2 回答
3564 浏览

java - 为什么我的 pbkdf2 实现这么慢(与 SQLCipher 相比)?

我在我的 Xoom 平板电脑上编写了一个简单的 Android 应用程序,它只是将一些字符串注释存储在 SQLCipher 数据库中。

系统会提示用户输入密码短语,SQLCipher 库将使用该密码短语。到目前为止,这工作正常并且非常顺利。

现在我还实现了一个用于身份验证的小型 PBKDF2 算法(事实上,我想在将来加密一些其他文件,这些文件不能存储在数据库中)。但就目前而言,我只是来检查我的 pbkdf2 算法是否正确。我只使用了 javax.crypto 和 java.security 库。

代码片段如下:

salt 是一个 16 字节的随机数,由 SecureRandom 生成。

所以我硬编码了密钥和盐,并比较了派生密钥进行身份验证(只是一个测试用例!)

我现在的问题是,在我的 Xoom 上,它持续大约 5 秒,直到派生函数完成,尽管迭代只设置为 500。

AFAIK SQLCipher 默认使用 4000 的迭代次数,如果密钥错误或正确,它会立即响应。(如果我将迭代设置为 4000,则至少需要 15 秒)

问题是,我是否实现了效率低下或者是因为 SQLCipher 的性能非常好(本机 NDK 函数等)?

提前谢谢你 ps:对不起,我的英语还不是很好!

编辑:

对不起,我不够清楚:-)

我知道 PBKDF2 应该很慢(特别是迭代量,以减慢蛮力攻击),这正是我要问的原因!我想将迭代次数设置为 5000(这是不可接受的,超过 15 秒)

我只是想知道,因为,就像我说的,SQLCipher 还使用 PBKDF2(迭代 = 4k,而我使用的是500)从给定密码派生密钥。最后我不是在谈论使用 AES 加密,它只是关于派生密钥的区别。

当然,SQLCipher 似乎比自制的密钥导出函数要快得多,但我不认为会有这么大的不同,因为 SCLCipher 的 PBKDF2 真的可以即时工作!

问候!

0 投票
1 回答
103 浏览

php - hash_pbkdf2 没有输出

我正在编写一段 php 代码,但没有给我想要的输出;

当我在散列之前放置 unhashpass 或 salt 的 echo 语句时,它可以工作,但在它什么都不做之后,整个 php 脚本只会给我一个白屏。有人可以帮我:)吗?

干杯

0 投票
3 回答
5872 浏览

cryptography - PBKDF2-HMAC-SHA-512 测试向量

我无法找到 PBKDF2-HMAC-SHA-512 的已发布测试向量。我已经构建了一个函数,它(终于!)再现了RFC 4231中的 7 个 HMAC-SHA-512 测试向量,以及在这个线程中找到的 PBKDF2-HMAC-SHA-256 的 32 字节测试向量。

这是它为 PBKDF2-HMAC-SHA-512 生成的内容。谁能帮我验证这个输出?
谢谢,弗雷德