问题标签 [kdf]

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 回答
20386 浏览

java - PBEKeySpec iterationCount 和 keyLength 参数有什么影响?

深入研究 java 加密和散列世界,我看到了类的构造函数示例,PBEKeySpec该类具有不同的值iterationCountkeyLength参数。似乎没有什么可以解释这些参数的影响或含义。

我假设这keyLength是密钥的长度,因此 32 位加密将采用 32 作为密钥长度的值,但这种假设感觉是错误的。我的猜测iterationCount是每个字符被加密的次数,同样也没有感受到这种假设的爱。

信息或解释的链接表示赞赏。

0 投票
4 回答
19149 浏览

c - Password to key function compatible with OpenSSL commands?

For example, the command:

outputs something like:

How is that key generated? (C code as an answer would be too awesome to ask for :) ) Also, how is the iv generated?

Looks like some kind of hex to me.

0 投票
1 回答
236 浏览

php - PHP 中的 RFC 2246 PRF 函数

我一直在寻找 RFC 2246 中 PRF 函数的实现。我找到了三个。一个在这里,一个来自 openSSL 库,一个来自 wpa_supplicant。它们都返回不同的结果。所以我的第一个问题是:某处是否有样本 PRF 输入和样本 PRF 输出?

该功能是从 PHP 连接到 .NET Web 服务(受 WS-Security 保护)的一部分。

到目前为止我发现的是这个。我的客户首先使用用户名/密码和随机数发送一个令牌请求——这是一个 RST。服务器在其 RSTR 中以另一个 nonce 和一个安全令牌进行响应。我的客户的下一个请求应该带有一个签名,其密钥来自两个随机数和一个“主密钥”。该派生密钥是根据 RFC 2246 计算的。这就是为什么我需要一个可靠的实现。

即使我有一个可靠的实现,在 WS-Security 的上下文中,该函数的参数是什么?PRF 函数应采用三个参数,即:

秘密,标签,种子。

我在这里读到,微软使用的标签是“WS-SecureConversationWS-SecureConversation”,但那篇文章是在 2006 年写的……现在,秘密是什么?是原密码吗?安全令牌?这些的组合?最后,种子是什么?我有两个随机数——我是连接它们,还是它们,异或?

我被严重卡住了。非常感谢任何帮助。

0 投票
1 回答
316 浏览

python - Python KDF - 主密钥和衍生物

我需要以下问题陈述的帮助 -

加密文件可以通过以下组合(任意 2 DK 或 1 MK)打开 -

任何与 Python KDF 逻辑有关的单挑。任何好的文档/参考也足以达到目的。我尝试使用 KDF(MK, "pass1") -> DK1 派生密钥,但是组合逻辑不起作用。

0 投票
1 回答
28 浏览

function - 重复基于密码的派生密钥的可能性?

几个月前,我进入了密码学领域,我对此表示怀疑。从技术上讲,PBKDF 将任何密码(具有任何密钥长度)转换为具有特定密钥长度的单一密钥。我知道这是为了可以使用任何用户输入的密码和密码算法,从而不会导致密钥长度错误。

例如,如果 AES 128 接受 128 位密钥大小,当我用蛮力解密时,我有 2^128 次找到正确密钥 (X) 的可能性。但是用户密码的可能性是无限的(理论上,在实践中一个遥远的 keylength 值界定了可能性)。因此,当程序应用 PBKDF 时,无限数量的用户密码变为相同的 128 位派生密钥 (X)。无论如何,至少一个 128 位的用户密码,应用 PBKDF,会产生正确的派生密钥 (X)。这是真实的?我只是打算将逻辑应用于概念。

无论如何,我记得 128 位密钥长度蛮力意味着很多时间。

0 投票
1 回答
352 浏览

encryption - 加密 (cryptojs) - 解密 (erlang)

我有一个用 cryptoJS (AES) 加密的值,需要使用 Erlang 加密库解密。对我来说,问题在于能够使用aes_cbc_128_decrypt(Key, IVec, Cipher)我假设的 Erlang 解密,我需要知道所使用的 IVec 是什么以及应该如何组成密钥。

0 投票
1 回答
3379 浏览

security - 我的密码脚本加密有多安全?(Golang、AES256、pbkdf2、hmac)

首先,我想说这只是一个学习练习,我不打算在生产中使用它。

我用 Golang 写了一个小应用程序,有两个功能:encrypt(plaintext string, password string)decrypt(encrypted string, password string)

加密步骤如下:

  1. 生成随机 256 位用作盐
  2. 生成 128 位用作初始化向量
  3. 使用 PDKDF2 从密码和盐生成 32 位密钥
  4. 生成带有密钥和明文的 32 位 HMAC,并将其附加到明文的开头
  5. 在 CFB 模式下使用 AES 加密 hmac+明文

返回的字节数组如下所示:

解密时:

  1. 提取盐并使用提供的密码来计算密钥
  2. 提取IV并解密密文的加密部分
  3. 从解密值中提取mac
  4. 用明文验证mac

我还没有疯狂到在任何生产项目中使用我自己的加密脚本,所以请指出任何为我执行此操作的库(相对安全的简单密码/消息加密)

下面是这两个函数的源代码:

0 投票
1 回答
2401 浏览

c# - ECDH 与充气城堡

我有一个规定。

使用静态统一模型、C(0e, 2s, ECC CDH)Key Agreement 技术(如 NIST 特别出版物 800-56Ar214 中的规定,除了将共享秘密归零的要求外)计算共享秘密 Z:

  • NIST 特别出版物 800-56Ar2 中规定的基于 SHA-256 的单步密钥导出函数 (KDF);和

  • 椭圆曲线操作的 P-256 曲线

我已经阅读并尝试实现我在这里找到的内容,但它不起作用。

此时,我可以验证共享密钥是否正确,但我无法获得正确的密钥,也无法(不编辑 Bouncy Castle 源)弄清楚如何将 OtherInfo 带入计算中。我已经搜索和搜索...

代码很简单

我很难过,如果我做错了什么,我将不胜感激。谢谢

0 投票
1 回答
237 浏览

c - 如何填充短字符串以用作 AES 密钥?

我有 5 个不同的字符串要用作键。他们是:

我想像这样使用 EVP OpenSSL 执行加密:https ://www.openssl.org/docs/man1.0.2/crypto/EVP_EncryptInit.html

但是,我意识到该示例使用的是固定大小的密钥(AES_128 为 16 个字符)。

我的问题是:如何使我的字符串始终具有固定大小的 16 个字符?

我没有看到 EVP 中的任何函数可以使我的字符串成为固定大小的键。

0 投票
1 回答
2002 浏览

ios - 从共享密钥生成派生密钥 (ECDH-ES) - ConcatKDF

我已使用https://github.com/ricmoo/GMEllipticCurveCrypto使用 ECDH 算法生成共享密钥。

我现在必须使用此处提到的 ECDH-ES 算法生成派生密钥:https ://www.rfc-editor.org/rfc/rfc7518#section-4.6

如果有人可以指导我生成派生密钥的方向,我将不胜感激