根据我的问题Aes Encryption ...错过了一个重要的部分,我现在已经了解到我在字符串上创建可逆加密的假设有点过时了.我现在有
public static byte[] EncryptString(string toEncrypt, byte[] encryptionKey)
{
var toEncryptBytes = Encoding.UTF8.GetBytes(toEncrypt);
using (var provider = new AesCryptoServiceProvider())
{
provider.Key = encryptionKey;
provider.Mode = CipherMode.CBC;
provider.Padding = PaddingMode.PKCS7;
using (var encryptor = provider.CreateEncryptor(provider.Key, provider.IV))
{
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(toEncryptBytes, 0, toEncryptBytes.Length);
cs.FlushFinalBlock();
}
return ms.ToArray();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这产生了一致的结果; 但是,如果不知道/设置初始化向量,我将无法解密.我真的不想将三个值传递给这个方法(在IV上),这让我硬编码IV或从密钥中导出它.我想知道这是不是一个好的做法,或者它是否会使加密的值容易受到某种程度的攻击......或者我是否真的过度思考这个并且应该硬编码IV?
更新 根据铱星的建议,我尝试了类似的东西:
public static byte[] EncryptString(string toEncrypt, byte[] encryptionKey)
{
if …Run Code Online (Sandbox Code Playgroud) 我正在尝试openssl使用aes-128-cbc加密来加密文本文件,我想知道是否有一种方法可以仅使用密钥而不是 iv 对其进行加密?
每次我尝试运行时:
openssl enc -aes-128-cbc -e -in dummy_file.txt -out dummy.aes-128-cbc.bin -K 00112233445566778889aabbccddeeff
Run Code Online (Sandbox Code Playgroud)
我收到错误消息iv undefined,它生成的加密文件为空,甚至不是二进制文件。