赞
踩
在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家。
先看看加密的基本概念:
"加密",是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。
加密的基本功能包括:
1. 防止不速之客查看机密的数据文件;
2. 防止机密数据被泄露或篡改;
3. 防止特权用户(如系统管理员)查看私人数据文件;
4. 使入侵者不能轻易地查找一个系统的文件。
本节主要分享AES加密解密: AES算法基于排列和置换运算,排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。
AES 使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
- /// <summary>
- /// AES 加密
- /// </summary>
- /// <param name="str">明文(待加密)</param>
- /// <param name="key">密文</param>
- /// <returns></returns>
- public string AesEncrypt(string str, string key)
- {
- if (string.IsNullOrEmpty(str)) return null;
- Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
-
- RijndaelManaged rm = new RijndaelManaged
- {
- Key = Encoding.UTF8.GetBytes(key),
- Mode = CipherMode.ECB,
- Padding = PaddingMode.PKCS7
- };
-
- ICryptoTransform cTransform = rm.CreateEncryptor();
- Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
- return Convert.ToBase64String(resultArray);
- }
-
- /// <summary>
- /// AES 解密
- /// </summary>
- /// <param name="str">明文(待解密)</param>
- /// <param name="key">密文</param>
- /// <returns></returns>
- public string AesDecrypt(string str, string key)
- {
- if (string.IsNullOrEmpty(str)) return null;
- Byte[] toEncryptArray = Convert.FromBase64String(str);
-
- RijndaelManaged rm = new RijndaelManaged
- {
- Key = Encoding.UTF8.GetBytes(key),
- Mode = CipherMode.ECB,
- Padding = PaddingMode.PKCS7
- };
-
- ICryptoTransform cTransform = rm.CreateDecryptor();
- Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-
- return Encoding.UTF8.GetString(resultArray);
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。