Mat*_*tze -1 encryption openssl cryptography aes
我openssl-1.0.2l.tar.gz从https://www.openssl.org/source/下载了源包,并为 Windows 制作了一个全新的 x64 版本。我使用该openssl应用程序使用以下命令加密文件:
openssl enc -aes-128-cbc -a -salt -in data.txt -kfile key.txt -out encrypted.txt -p
Run Code Online (Sandbox Code Playgroud)
现在,我想在 .NET 应用程序(用 C# 编写)中使用加密文件。我读取了加密文件(Base64由于-a开关而使用 编码),对其进行解码,并提取前 16 个字节以获取 OpenSSL 生成的盐......到目前为止,这工作正常;盐以 为前缀Salted__,接下来的 8 个字节是实际的盐值。
到目前为止,我学到的是 OpenSSL 读取给定密钥文件的第一行并使用该字符串作为密码。实际的密钥和初始化向量是从 passphase、salt 和一些散列派生出来的,这些都没有正式记录。
该-p开关给我一个用于加密的密钥和初始化向量,但我想知道,我怎么可以从已知的密码和盐重现数据......一切我曾尝试给我钥匙和矢量数据与 openssl 应用程序给我的不同。
当然,我已经在 stackoverflow 和 crypto.stackexchange 上找到了类似的问题(和答案),但似乎没有一个解决方案有效,或者与aes-256-cbc……不确定,如果这有什么不同?
需要做什么才能正确导出密钥和初始化向量?