问题标签 [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 投票
1 回答
497 浏览

c# - PBKDBF2 哈希 - 在 PHP 中复制 .NET rfc2898DerivedBytes 类的功能

我有一个使用具有用户管理模块的 MVC 构建的 .NET 网站。该模块生成符合 RFC2898 规范的用户密码,并将其存储在 db.xml 中。我正在使用的具体实现是在System.Web.Helpers.Crypto.HashPassword().

查看此处找到的该方法的源代码,它包装了对 Rfc2898DeriveBytes 类的调用,该类实际上创建了散列。

到现在为止还挺好。我面临的问题是我们有一个用 PHP 编写的 Web 服务,它必须进行实际的用户身份验证。这意味着它必须能够从用户那里接收原始密码并生成相同的哈希值。

NETCrypto.HashPassword()函数创建一个包含盐和密钥的 base64 编码字符串。我们正确(我认为)在下面的 PHP 实现中提取了这些数据,所以盐输入应该是相同的。

两种实现都执行 1000 次迭代。

我们的 PHP 实现:

所以我的问题是:谁能告诉我这个 PHP 实现是否应该生成与 .NET Rfc2898DerivedBytes 实现相同的输出?据说它们都符合 RFC2898。

我不是这个主题的领域专家,所以我们可能在这里遗漏了一些明显的东西..

提前致谢!

0 投票
1 回答
9176 浏览

passwords - Java 中带有 HMAC 的 PBKDF2

我正在开发一个 Java 项目,我必须确保保存在纯文本文件中的用户密码的机密性和完整性。

为此,我将只在文件中写入密码的哈希值。更具体地说,我的意图是编写密码的哈希值和随机盐,加上随机盐本身,以避免使用彩虹表和查找表。我还想对 PBKDF2 使用键拉伸,以使哈希的计算在计算上变得昂贵。最后,我想使用密钥哈希算法 HMAC 作为最后一层保护。

我正在尝试在 Java 代码中实现我的想法,并且我找到了一些上面介绍的操作示例:

我真正无法理解的是如何输入我的密钥作为 HMAC 算法使用的密钥,因为它似乎不是函数的输入。我浏览了 Java 文档,但找不到我的问题的解决方案。

在这一点上,我不确定我是否正确理解了加密机制的不同部分是如何工作的,所以我会接受有关该主题的任何帮助。

0 投票
1 回答
2203 浏览

java - PBEKeySpec 的 salt、迭代计数和密钥长度的默认值

http://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/PBEKeySpec.html

根据盐,迭代计数和密钥长度是可选参数。如果未指定默认值是什么?

对于具有固定密钥长度的算法,密钥长度很容易计算出来,但像 AES 这样的算法可以有多个密钥长度。

有任何想法吗?

0 投票
1 回答
2286 浏览

javascript - javascript中Rfc2898DeriveBytes的等价物?

我见过 C# 代码可以使用如下代码加密和解密密码:

http://wp7-travel.googlecode.com/svn/trunk/SilverlightPhoneDatabase/Cryptography.cs

我不是安全专家,对加密算法的经验有限。我有一个由那种代码加密的加密密码,现在想在 node.js 程序(Javascript)中访问解密的密码。

似乎crypto-js有一个pbkdf2.js模块,但它只知道如何加密密码。

我见过http://anandam.name/pbkdf2/但它似乎只是一个加密器。没有解密。

任何人都可以提供可以解密密码的代码,给定已知的盐和用于加密它的迭代,使用纯 Javascript,最好利用常见的模块,如crypto-js

0 投票
1 回答
61 浏览

encryption - 如何判断一个字节数组是否包含散列数据

是否可以确定字节数组是否包含使用 PBKDF2WithHmacSHA1 散列的数据?有没有可以提供帮助的模式?

0 投票
2 回答
478 浏览

c# - C# 和 JavaScript 之间的 pbkdf2 计算不一致

嗨,我的问题是我已经在 windows azure 服务器端 Javascript 上使用 crypto.pbkdf2 加密了密码我很确定有一个公共库可供您查找。问题是我试图在我的系统上用 C# 加密相同的密码,因为我希望凭证是通用的,但是尽管使用了 Rfc2898DeriveBytes 并且第一次生成的盐我无法返回到相同的散列密码。

谢谢您的帮助 :)

和 C# 代码:

C# 生成的十六进制 = 3lRSQF5ImYlQg20CGFy2iGUpWfdP5TD0eq2cTHhLono=

由 JS 生成的十六进制 = w4PDh8K6YMKGwr3DgcObRsOsFFUgDMOJw5PCnkdAwrTCgcOOV8OCKMKFdcKRwrLCqMK2VA==

由 JS 生成并用于两者的盐 = /Ij0hgDsvAC1DevM7xkdGUVlozdCxXVd0lgfK2xEh2A=

以上信息均为base64格式

另一件事可能有用

这意味着 JS 函数接受一个字符串

0 投票
1 回答
3722 浏览

ios - 字符串 AES PBKDF2 的加密

我是加密新手,我使用了所有类型的加密技术,但客户特别询问 PBKDF2 加密技术。有什么帮助吗?

0 投票
2 回答
2110 浏览

hash - Crypto - Express.js 是否足够 PBKDF2 HMAC-SHA1?

使用 Express.js 框架和加密使用 pbkdf2 对密码进行哈希处理,我读到默认算法是 HMAC-SHA1,但我不明白为什么它没有升级到其他家族或 SHA 之一。

keylen 是我们提供我们想要的 SHA 的变体吗?像 SHA-256,512 等?

此外,HMAC 如何改变输出?

最后,当 SHA1 被破坏时,它是否足够强大?

对不起,如果我把事情搞混了。

0 投票
1 回答
716 浏览

c++ - 使用 Crypto++ 进行恒定时间密码摘要比较

我正在编写一个程序,该程序使用 pbkdf2 方法使用 cryptopp对密码进行哈希处理。

我在验证密码时遇到问题。我试图在“长度恒定”时间内比较输出,但它总是失败并返回 false。

使用“慢等于”甚至是验证 pbkdf2 密码的正确方法吗?我对此有点困惑。

0 投票
1 回答
1386 浏览

c# - Rfc2898DeriveBytes - 密码长度

试图找到相关答案很长一段时间,但还没有被说服。

我正在尝试使用 RijndaelManaged 进行加密。为了创建密钥,我将密码、盐和迭代传递给 Rfc2898DeriveBytes。

如果用户输入的密码低于特定长度,我正在考虑添加常量,然后再将其传递给 Rfc2898DeriveBytes。

到目前为止,我发现添加常量不会为安全性增加任何好处。假设攻击者可以访问包含加密数据和盐的数据库,但不保持不变会给他带来一些困难。虽然最后他会发现那个不变。

或者将任何长度的密码传递给 Rfc2898DeriveBytes 是“非常安全的”而不用担心?

传递较短或较长的密码是否会影响密钥派生过程,哪个更好和最推荐?

到目前为止,我所知道的随机盐和更多迭代很重要。

以下是代码,我应该删除向密码添加常量还是保留它?

(注:用户密码长度限制在 GUI 没有应用,用户可以传递 1 个字符甚至超过 10 个字符)

欢迎任何正面或负面的评论和回应。