通过对称解密算法AES-256-CBC对文件进行加密解密

以下例子使用对称解密使用的算法为 AES-256-CBC(256位密钥 = 32 bytes Key,通过SHA256计算得到,128位iv=16 bytes IV,通过MD5计算得到),数据采用PKCS#7填充。

	using System.Security.Cryptography;
	using System.Text;
	
    public static void Main()
    {
        // 定义加密密钥和初始化向量
        byte[] key = new byte[32]; // 256位密钥
        byte[] iv = new byte[16]; // 128位IV
        key= SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes("密钥"));
        iv = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes("向量"));

        // 也可生成随机密钥和向量
        //using (var aes = Aes.Create())
        //{
        //    key = aes.Key;
        //    iv = aes.IV;
        //}
        
        // 创建加密器和解密器对象
        using (var aes =  Aes.Create())
        {
            aes.KeySize = 256;
            aes.Key = key;
            aes.IV = iv;
            aes.Mode = CipherMode.CBC;
            aes.Padding = PaddingMode.PKCS7;

            // 加密文件数据流
            using (var inputStream = new FileStream(@"inputfile.txt", FileMode.Open))
            using (var outputStream = new FileStream(@"encryptedOutputFile", FileMode.Create))
            using (var encryptor = aes.CreateEncryptor())
            using (var cryptoStream = new CryptoStream(outputStream, encryptor, CryptoStreamMode.Write))
            {
                inputStream.CopyTo(cryptoStream);
            }

            // 解密文件数据流
            using (var inputStream = new FileStream(@"encryptedOutputFile", FileMode.Open))
            using (var outputStream = new FileStream(@"decryptedOutputFile.txt", FileMode.Create))
            using (var decryptor = aes.CreateDecryptor())
            using (var cryptoStream = new CryptoStream(inputStream, decryptor, CryptoStreamMode.Read))
            {
                cryptoStream.CopyTo(outputStream);
            }
        }
    }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值