如果不保存和重复使用 PBKDF2 中的盐,以下如何可能?
这是我正在做的encrypt文件:
openssl aes-256-cbc -pbkdf2 -in secret.txt -out secret.enc -a -kfile kfile.file
在哪里
secret.txt = "secret message"
,和kfile.file = "password"
然后我运行以下命令decrypt刚刚加密的文件:
openssl aes-256-cbc -pbkdf2 -d -in secret.enc -out secret.decrypted -a -kfile kfile.file
解密后的文件结果
secret.decrypted = "secret message"
据我所知,我需要用于 PBKDF2 的初始盐来导出相同的解密密钥,为什么这里显然不是这种情况?
当运行
openssl aes-256-cbc -help
时,它声明默认情况下在KDF中使用盐。
(隐式生成的)随机 8 字节盐和密文自动连接。另外,前面加上了
Salted__
的ASCII编码:
<ASCII encoding of Salted__>|<8 bytes salt>|<ciphertext>
-a
选项导致结果被 Base64 编码。由于固定前缀Salted__
,因此数据总是以U2FsdGVkX1
开头。