C# AES 加密解密示例

女爷i 2022-07-15 07:57 293阅读 0赞

AES 是一种对称加密算法。 相对非对称加密,对称加密解密过程速度更快, 适合大数据流实时加密解密。AES 被广泛应用于金融,政府等领域的网络传输。在这里分享一段用 .Net 自带框架 AES 算法调用的示例,以供交流学习。在AES中, 加密解密分享相同的Key和IV。

AES 对字符串加密

  1. public string AesEncrypt(string rawInput, byte[] key, byte[] iv)
  2. {
  3. if (string.IsNullOrEmpty(rawInput))
  4. {
  5. return string.Empty;
  6. }
  7. if (key == null || iv == null || key.Length < 1 || iv.Length < 1)
  8. {
  9. throw new ArgumentException("Key/Iv is null.");
  10. }
  11. using (var rijndaelManaged = new RijndaelManaged() {
  12. Key = key, // 密钥,长度可为128, 196,256比特位
  13. IV = iv, //初始化向量(Initialization vector), 用于CBC模式初始化
  14. KeySize = 256,//接受的密钥长度
  15. BlockSize = 128,//加密时的块大小,应该与iv长度相同
  16. Mode = CipherMode.CBC,//加密模式
  17. Padding = PaddingMode.PKCS7 }) //填白模式,对于AES, C# 框架中的 PKCS #7等同与Java框架中 PKCS #5
  18. {
  19. using (var transform = rijndaelManaged.CreateEncryptor(key, iv))
  20. {
  21. var inputBytes = Encoding.UTF8.GetBytes(rawInput);//字节编码, 将有特等含义的字符串转化为字节流
  22. var encryptedBytes = transform.TransformFinalBlock(inputBytes, 0, inputBytes.Length);//加密
  23. return Convert.ToBase64String(encryptedBytes);//将加密后的字节流转化为字符串,以便网络传输与储存。
  24. }
  25. }
  26. }

AES 对字符串解密

  1. public string AesDecrypt(string encryptedInput, byte[] key, byte[] iv)
  2. {
  3. if (string.IsNullOrEmpty(encryptedInput))
  4. {
  5. return string.Empty;
  6. }
  7. if (key == null || iv == null || key.Length < 1 || iv.Length < 1)
  8. {
  9. throw new ArgumentException("Key/Iv is null.");
  10. }
  11. using (var rijndaelManaged = new RijndaelManaged() { Key = key, IV = iv, KeySize = 256,
  12. BlockSize = 128, Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7})
  13. {
  14. using (var transform = rijndaelManaged.CreateDecryptor(key, iv))
  15. {
  16. var inputBytes = Convert.FromBase64String(encryptedInput);
  17. var encryptedBytes = transform.TransformFinalBlock(inputBytes, 0, inputBytes.Length);
  18. return Encoding.UTF8.GetString(encryptedBytes);
  19. }
  20. }
  21. }

发表评论

表情:
评论列表 (有 0 条评论,293人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA-对称加密AES解密示例

    这几天在解决报文中敏感字段传输问题时,由于对AES对称加密不熟悉,遇到了不少问题。特此记录,多的不说,直接上代码!代码中做了向量的异或(generateIv),如无特殊需要,可

    相关 C# AES 加密解密示例

    AES 是一种对称加密算法。 相对非对称加密,对称加密解密过程速度更快, 适合大数据流实时加密解密。AES 被广泛应用于金融,政府等领域的网络传输。在这里分享一段用 .Net