我正在编写一个小型编码类,它采用byte[]
数组,并对其进行加密。由于IV可以公开,我希望将它添加到用于解密的密文。
根据MSDN文档和一些SO Post源(找不到链接),我用原始IV启动了流;
//Start encryption process
using (var msEncrypt = new MemoryStream())
{
using (var csEncrypt = new CryptoStream(msEncrypt, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
using (var swWriter = new StreamWriter(csEncrypt))
{
//Write all data to the stream.
swWriter.Write(encryptor.IV);
swWriter.Write(plainTextRaw);
}
}
Console.WriteLine("Encrypted Value: {0}", BitConverter.ToString(msEncrypt.ToArray()).Replace("-", String.Empty));
return msEncrypt.ToArray();
}
但是,在编写一个提取前16个字节的简单单元测试时,它们似乎不匹配。
我确定IV正在流中加密,那么注入它的最佳位置在哪里?
答案 0 :(得分:1)
只需将IV写入初始内存流msEncrypt
,而不是写入正在加密的流swWriter
。