将IV附加到

时间:2013-11-13 03:19:32

标签: c# stream bytearray aes rijndaelmanaged

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

1 个答案:

答案 0 :(得分:1)

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