问题标签 [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 回答
416 浏览

web-config - 对 PBKDF2 的 ASP.Net 机器密钥支持

有谁知道是否可以将MS PBKDF2 实现包装在KeyedHashAlgorithm 类中,以便从 web.config 中的 machinekey 部分使用它?如果是这样,它是如何实现的?

0 投票
3 回答
16909 浏览

objective-c - 在 iOS 上使用 CommonCrypto 的 PBKDF2

我正在尝试使用CommonCrypto生成密钥,PBKDF2但我似乎无法导入CommonCrypto/CommonKeyDerivation.h,我只是找不到它的错误。

有任何想法吗?

编辑:我可能应该提到我已经添加了安全框架,我可以导入所有其他CommonCrypto标头。

0 投票
1 回答
674 浏览

objective-c - 我的 PBKDF2 实施不断得到错误的值

我正在尝试实现 PBKDF2,但我一直得到错误的结果,不确定问题是什么......

我正在使用常见的加密实现来检查我的结果

这是我的测试功能

这是我的实际代码

0 投票
3 回答
23104 浏览

java - Java 中带有 bouncycastle 的 PBKDF2

我正在尝试将密码安全地存储在数据库中,为此我选择存储使用 PBKDF2 函数生成的哈希值。我想使用充气城堡库来做到这一点,但我不知道为什么我不能通过使用 JCE 接口让它工作......问题是在 3 种不同模式下生成哈希:
1. 使用 PBKDF2WithHmacSHA1 密钥sun 提供的工厂
2. 直接使用充气城堡 api
3. 通过 JCE 使用充气城堡
会产生 2 个不同的值:一个与前两个相同,一个与第三个相同。

这是我的代码:

我知道 PBKDF2 是使用 HMAC SHA1 实现的,所以这就是为什么我在最后一种方法中选择从 bouncy castle java 文档中获取的“PBEWITHHMACSHA1”作为算法。

输出如下:

有任何想法吗?

0 投票
1 回答
1667 浏览

iphone - PBKDF2 的 CommonCrypto 替代品

由于 Apple 已弃用在 iOS 中使用 openSSL,因此我需要在一个 iOS 安全框架中替代 PBKDF2。我试图搜索 CommonCrypto,但没有成功。

是否有苹果推荐的 PBKDF2 的公平替代品?即iOS中的密钥派生功能(基于密码)(由Apple实现)?

PS 我知道PBKDF2 在 iOS 上使用 CommonCrypto,我不想使用 openSSL,因为 Apple 不推荐它,请参阅为什么 Apple 在 MacOS 10.7 (Lion) 中弃用 OpenSSL?

0 投票
2 回答
8222 浏览

authentication - Java - 使用 HMACSHA256 作为 PRF 的 PBKDF2

我的任务是为我们的项目创建一个登录 API,我应该使用带有 HMACSHA256 的 PBKDF2 作为 PRF。使用 MD5 对纯文本密码进行哈希处理,然后将其输入 PBKDF2 以生成派生密钥。问题是,我无法获得与项目文档告诉我的相同的输出。

这是 Java 中的 PBKDF2 实现:

我使用在这里找到的测试向量PBKDF2-HMAC-SHA2 测试向量来验证实现的正确性,并且全部检查出来。我不确定为什么我不能使用 MD5 散列密码获得相同的结果。

参数:

使用“foobar”作为明文密码,预期结果为:

我得到什么:

0 投票
3 回答
7161 浏览

c# - C# PasswordDeriveBytes 混淆

我在 C# 中有以下代码

我正在使用“SHA1”散列算法。

根据 SHA1 定义,它生成 160 位(20 字节)的密钥。我的问题是 GetBytes 方法如何从 DerivedPassword 获取 32 个字节,GetBytes 方法背后使用什么算法?

0 投票
1 回答
883 浏览

c++ - Crypto++ 中的 PBKDF

我在 C# 中有以下代码

.Net 的PasswordDeriveBytes用途PBKDF1。我正在使用“SHA1”散列算法来生成 32 字节的密钥。

请告诉我如何在加密++中实现这一点。在使用 PBKDF2 的 crypto++ 中,它生成 20 字节的密钥。如何制作 C# 生成的 32 字节密钥。

0 投票
1 回答
4928 浏览

java - Java 中的 RFC2898DeriveBytes 实现

作为我们项目的一部分,我必须解密用 C# 加密的字符串。此解密使用 AES 算法和打包模式作为 PKCS7 完成。为了生成初始化向量,他们使用了以下内容:

salt 是默认字节。

该 IV 用于使用 AES 加密字符串。

我通读了一些文档,发现AES可以用Java实现。但不确定如何通过 IV 和打包模式。

此外,我还看到有 CBC、ECB 模式用于提及密码块模式。我不确定 C# 对应项中使用的是什么模式。

下面是 C# 中的代码

任何人都可以帮助我在 Java 中创建等价物吗?

0 投票
1 回答
592 浏览

encryption - 使用 AES 和密码正确/安全地加密数据

现在,这就是我正在做的: 1. SHA-1 密码,如“pass123”,使用密钥的十六进制解码的前 32 个字符 2. 使用 AES-256 加密,只要默认参数是 ^Is够安全吗?

我需要我的应用程序使用密码安全地加密数据。当我在谷歌上搜索时,会出现太多不同的事情,还有一些我也不了解的事情。我将此作为一般性问题提出,而不是任何特定的编码语言(尽管我计划将其与 Java 和 iOS 一起使用)。

因此,现在我正在尝试更正确地执行此操作,请遵循我的想法:

  1. 输入是密码,例如“pass123”,数据是我要加密的数据,例如“银行账户是038414838,密码是5931”

  2. 使用 PBKDF2 从密码中派生密钥。参数:1000 次迭代长度 256 位 Salt - 这个让我很困惑,因为我不知道从哪里得到盐,我只是弥补一个吗?例如,我所有的加密都将始终使用盐“F”(因为显然盐是 8 位,这只是一个字符)

  3. 现在我拿这把钥匙,我要散列它吗?我应该使用 SHA-256 之类的东西吗?那安全吗?什么是 HMAC?我应该用那个吗?注意:我是否需要同时执行第 2 步和第 3 步,还是只需要其中一个即可?

  4. 好的,现在我有 256 位密钥来进行加密。所以我使用 AES 执行加密,但这里还有另一个令人困惑的部分(参数)。我不太确定要使用哪些不同的“模式”,显然有像 CBC 和 EBC 之类的其他一些我也不确定“初始化向量”,我是否只是编造一个并总是使用那个? 那么其他选项呢,什么是PKCS7Padding?