0

我正在编写一个小型编码类,它需要一个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 正在流中被加密,那么注入它的最佳位置在哪里?

4

1 回答 1

1

只需将 IV 写入初始内存流msEncrypt,而不是写入正在加密的流swWriter

于 2013-11-17T00:59:48.687 回答