| | |
| | | |
| | | |
| | | } |
| | | |
| | | namespace Shared.Securitys |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public partial class EncryptionService |
| | | { |
| | | #region 加密 |
| | | /// <summary> |
| | | /// 加密主题为Base64 |
| | | /// </summary> |
| | | /// <param name="pToEncrypt"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static string AesEncryptTopic(string pToEncrypt, string key) |
| | | { |
| | | if (string.IsNullOrEmpty(pToEncrypt)) return null; |
| | | if (string.IsNullOrEmpty(key)) return pToEncrypt; |
| | | //需要加密内容的明文流 |
| | | Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt); |
| | | |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | RijndaelManaged rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES加密器对象 |
| | | ICryptoTransform cTransform = rm.CreateEncryptor(); |
| | | |
| | | //使用AES将明文流转成密文字节数组 |
| | | Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | |
| | | //将AES生成的密文字节数组转成Base64字符串 |
| | | return Convert.ToBase64String(resultArray, 0, resultArray.Length); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加密负载为二进制流 |
| | | /// </summary> |
| | | /// <param name="toEncryptArray"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key) |
| | | { |
| | | if (string.IsNullOrEmpty(key)) return toEncryptArray; |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | var rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES加密器对象 |
| | | var cTransform = rm.CreateEncryptor(); |
| | | //使用AES将明文流转成密文字节数组 |
| | | return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region 解密 |
| | | /// <summary> |
| | | /// 解密主题数据 |
| | | /// </summary> |
| | | /// <param name="pToDecrypt"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static string AesDecryptTopic(string pToDecrypt, string key) |
| | | { |
| | | //AES密文Base64转成字符串 |
| | | Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt); |
| | | |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | RijndaelManaged rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES解密器对象 |
| | | ICryptoTransform cTransform = rm.CreateDecryptor(); |
| | | |
| | | //使用AES将密文流转成明文的字节数组 |
| | | Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | |
| | | //转成字符串 |
| | | return Encoding.UTF8.GetString(resultArray); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 采用Aes解密负载数据 |
| | | /// </summary> |
| | | /// <param name="toEncryptArray"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key) |
| | | { |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | var rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES解密器对象 |
| | | var cTransform = rm.CreateDecryptor(); |
| | | |
| | | //使用AES将密文流转成明文的字节数组 |
| | | return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | } |
| | | } |