0

我正在尝试使用 RijndaelManaged 类加密缓冲区,但没有成功。它总是返回字节[0]。这是代码:

    public byte[] Encrypt(byte[] data, byte[] key)
    {
        using (var ms = new MemoryStream())
        {
            using (var aes = RijndaelManaged.Create())
            {
                aes.Key = _checksumProvider.CalculateChecksum(key);
                aes.IV = _checksumProvider.CalculateChecksum(key);
                var stream = new CryptoStream(ms, aes.CreateEncryptor(aes.Key, aes.IV), CryptoStreamMode.Write);
                stream.Write(data, 0, data.Length);
                return ms.ToArray();
            }
        }
    }

Key 和 IV 已正确分配。知道代码有什么问题吗?谢谢。

4

1 回答 1

4

你需要打电话stream.FlushFinalBlock()

这将执行加密中的任何最后步骤,并将 CryptoStream 的内部缓冲区刷新到底层内存流中。

于 2013-04-19T19:01:25.157 回答