问题标签 [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.
java - PBEKeySpec iterationCount 和 keyLength 参数有什么影响?
深入研究 java 加密和散列世界,我看到了类的构造函数示例,PBEKeySpec
该类具有不同的值iterationCount
和keyLength
参数。似乎没有什么可以解释这些参数的影响或含义。
我假设这keyLength
是密钥的长度,因此 32 位加密将采用 32 作为密钥长度的值,但这种假设感觉是错误的。我的猜测iterationCount
是每个字符被加密的次数,同样也没有感受到这种假设的爱。
信息或解释的链接表示赞赏。
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.
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 年写的……现在,秘密是什么?是原密码吗?安全令牌?这些的组合?最后,种子是什么?我有两个随机数——我是连接它们,还是它们,异或?
我被严重卡住了。非常感谢任何帮助。
python - Python KDF - 主密钥和衍生物
我需要以下问题陈述的帮助 -
加密文件可以通过以下组合(任意 2 DK 或 1 MK)打开 -
任何与 Python KDF 逻辑有关的单挑。任何好的文档/参考也足以达到目的。我尝试使用 KDF(MK, "pass1") -> DK1 派生密钥,但是组合逻辑不起作用。
function - 重复基于密码的派生密钥的可能性?
几个月前,我进入了密码学领域,我对此表示怀疑。从技术上讲,PBKDF 将任何密码(具有任何密钥长度)转换为具有特定密钥长度的单一密钥。我知道这是为了可以使用任何用户输入的密码和密码算法,从而不会导致密钥长度错误。
例如,如果 AES 128 接受 128 位密钥大小,当我用蛮力解密时,我有 2^128 次找到正确密钥 (X) 的可能性。但是用户密码的可能性是无限的(理论上,在实践中一个遥远的 keylength 值界定了可能性)。因此,当程序应用 PBKDF 时,无限数量的用户密码变为相同的 128 位派生密钥 (X)。无论如何,至少一个 128 位的用户密码,应用 PBKDF,会产生正确的派生密钥 (X)。这是真实的?我只是打算将逻辑应用于概念。
无论如何,我记得 128 位密钥长度蛮力意味着很多时间。
encryption - 加密 (cryptojs) - 解密 (erlang)
我有一个用 cryptoJS (AES) 加密的值,需要使用 Erlang 加密库解密。对我来说,问题在于能够使用aes_cbc_128_decrypt(Key, IVec, Cipher)
我假设的 Erlang 解密,我需要知道所使用的 IVec 是什么以及应该如何组成密钥。
security - 我的密码脚本加密有多安全?(Golang、AES256、pbkdf2、hmac)
首先,我想说这只是一个学习练习,我不打算在生产中使用它。
我用 Golang 写了一个小应用程序,有两个功能:encrypt(plaintext string, password string)
和decrypt(encrypted string, password string)
加密步骤如下:
- 生成随机 256 位用作盐
- 生成 128 位用作初始化向量
- 使用 PDKDF2 从密码和盐生成 32 位密钥
- 生成带有密钥和明文的 32 位 HMAC,并将其附加到明文的开头
- 在 CFB 模式下使用 AES 加密 hmac+明文
返回的字节数组如下所示:
解密时:
- 提取盐并使用提供的密码来计算密钥
- 提取IV并解密密文的加密部分
- 从解密值中提取mac
- 用明文验证mac
我还没有疯狂到在任何生产项目中使用我自己的加密脚本,所以请指出任何为我执行此操作的库(相对安全的简单密码/消息加密)
下面是这两个函数的源代码:
c# - ECDH 与充气城堡
我有一个规定。
使用静态统一模型、C(0e, 2s, ECC CDH)Key Agreement 技术(如 NIST 特别出版物 800-56Ar214 中的规定,除了将共享秘密归零的要求外)计算共享秘密 Z:
NIST 特别出版物 800-56Ar2 中规定的基于 SHA-256 的单步密钥导出函数 (KDF);和
椭圆曲线操作的 P-256 曲线
我已经阅读并尝试实现我在这里找到的内容,但它不起作用。
此时,我可以验证共享密钥是否正确,但我无法获得正确的密钥,也无法(不编辑 Bouncy Castle 源)弄清楚如何将 OtherInfo 带入计算中。我已经搜索和搜索...
代码很简单
我很难过,如果我做错了什么,我将不胜感激。谢谢
c - 如何填充短字符串以用作 AES 密钥?
我有 5 个不同的字符串要用作键。他们是:
我想像这样使用 EVP OpenSSL 执行加密:https ://www.openssl.org/docs/man1.0.2/crypto/EVP_EncryptInit.html
但是,我意识到该示例使用的是固定大小的密钥(AES_128 为 16 个字符)。
我的问题是:如何使我的字符串始终具有固定大小的 16 个字符?
我没有看到 EVP 中的任何函数可以使我的字符串成为固定大小的键。
ios - 从共享密钥生成派生密钥 (ECDH-ES) - ConcatKDF
我已使用https://github.com/ricmoo/GMEllipticCurveCrypto使用 ECDH 算法生成共享密钥。
我现在必须使用此处提到的 ECDH-ES 算法生成派生密钥:https ://www.rfc-editor.org/rfc/rfc7518#section-4.6
如果有人可以指导我生成派生密钥的方向,我将不胜感激