C#AES加密
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#AES加密,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2815字,纯文字阅读大概需要5分钟。
内容图文
![C#AES加密](/upload/InfoBanner/zyjiaocheng/1316/baecb208a9484ce39c6835696dbd0b97.jpg)
今天写个接口,要求如下,需要对应的AES加密(128位),例子php的
C#实现
/// <summary> /// AES 加密 输出hex格式 /// </summary> /// <param name="str"> 明文(待加密) </param> /// <param name="key"> 密文 </param> /// <returns></returns> public static string AesEncrypt(string str, string key) { if (string.IsNullOrEmpty(str)) returnnull; Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged { Key = Encoding.UTF8.GetBytes(key), Mode = System.Security.Cryptography.CipherMode.ECB, Padding = System.Security.Cryptography.PaddingMode.Zeros //加密什么格式对应改为就行,基本的话应该为PKCS7 }; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); //return Convert.ToBase64String(resultArray, 0, resultArray.Length);return ByteArrayToHexString(resultArray); } ///<summary>/// 将一个byte数组转换成一个格式化的16进制字符串 ///</summary>///<param name="data">byte数组</param>///<returns>格式化的16进制字符串</returns>publicstaticstring ByteArrayToHexString(byte[] data) { StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) { //16进制数字 sb.Append(Convert.ToString(b, 16).PadLeft(2, ‘0‘)); //16进制数字之间以空格隔开 //sb.Append(Convert.ToString(b, 16).PadLeft(2, ‘0‘).PadRight(3, ‘ ‘)); } return sb.ToString().ToUpper(); }
/// <summary> /// AES 解密 输出hex格式 /// </summary> /// <param name="str"> 明文(待解密) </param> /// <param name="key"> 密文 </param> /// <returns></returns> public static string AesDecrypt(string str, string key) { if (string.IsNullOrEmpty(str)) returnnull; //Byte[] toEncryptArray = Convert.FromBase64String(str);byte[] toEncryptArray = HexStringToByteArray(str); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged { Key = Encoding.UTF8.GetBytes(key), Mode = System.Security.Cryptography.CipherMode.ECB, Padding = System.Security.Cryptography.PaddingMode.Zeros }; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } ///<summary>/// 将指定的16进制字符串转换为byte数组 ///</summary>///<param name="s">16进制字符串(如:“7F 2C 4A”或“7F2C4A”都可以)</param>///<returns>16进制字符串对应的byte数组</returns>publicstaticbyte[] HexStringToByteArray(string s) { s = s.Replace("", ""); byte[] buffer = newbyte[s.Length / 2]; for (int i = 0; i < s.Length; i += 2) buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16); return buffer; }
输出为Base64将我注释的取消就行,这个是因为需求要的是hex格式
原文:https://www.cnblogs.com/Cein/p/8406428.html
内容总结
以上是互联网集市为您收集整理的C#AES加密全部内容,希望文章能够帮你解决C#AES加密所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。