我正在阅读一本名为从 wrox 开始 asp.net 安全性的书,我在这一部分中,它显示了使用 rijndael 的代码片段,该示例未包含在可下载的源代码中。我决定在论坛中寻求(专业)帮助。
如果您也尝试测试它,并希望给出一个关于我如何实现它的示例(代码),那就太棒了。
这是代码:
public class EncryptionRijndael
{
        public EncryptionRijndael()
        {
                //
                // TODO: Add constructor logic here
                //
        }
    public static byte[] GenerateRandomBytes(int length)
    {
        byte[] key = new byte[length];
        RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
        provider.GetBytes(key);
        return key;
    }
    public void GetKeyAndIVFromPasswordAndSalt(string password, byte[] salt,SymmetricAlgorithm symmetricAlgorithm,ref byte[] key, ref byte[] iv)
    {
        Rfc2898DeriveBytes rfc2898DeriveBytes =
        new Rfc2898DeriveBytes(password, salt);
        key =
        rfc2898DeriveBytes.GetBytes(symmetricAlgorithm.KeySize / 8);
        iv =
        rfc2898DeriveBytes.GetBytes(symmetricAlgorithm.BlockSize / 8);
    }
    public static byte[] Encrypt(byte[] clearText, byte[] key, byte[] iv)
    {
        // Create an instance of our encyrption algorithm.
        RijndaelManaged rijndael = new RijndaelManaged();
        // Create an encryptor using our key and IV
        ICryptoTransform transform = rijndael.CreateEncryptor(key, iv);
        // Create the streams for input and output
        MemoryStream outputStream = new MemoryStream();
        CryptoStream inputStream = new CryptoStream(
        outputStream,
        transform,
        CryptoStreamMode.Write);
        // Feed our data into the crypto stream.
        inputStream.Write(clearText, 0, clearText.Length);
        // Flush the crypto stream.
        inputStream.FlushFinalBlock();
        // And finally return our encrypted data.
        return outputStream.ToArray();
    }
    static byte[] Decrypt(byte[] cipherText, byte[] key, byte[] iv)
    {
        // Create an instance of our encyrption algorithm.
        RijndaelManaged rijndael = new RijndaelManaged();
        // Create an decryptor using our key and IV ;
        ICryptoTransform transform = rijndael.CreateDecryptor(key, iv);
        // Create the streams for input and output
        MemoryStream outputStream = new MemoryStream();
        CryptoStream inputStream = new CryptoStream(outputStream,transform,CryptoStreamMode.Write);
        // Feed our data into the crypto stream.
        inputStream.Write(cipherText, 0, cipher.Length);
        // Flush the crypto stream.
        inputStream.FlushFinalBlock();
        // And finally return our decrypted data.
        return outputStream.ToArray();
    }
}
先生/女士,您的回答会很有帮助。谢谢++(如果你能告诉我如何正确调用加密和解密,那就太棒了)