日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#AES加密

發布時間:2024/4/14 C# 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#AES加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天寫個接口,要求如下,需要對應的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)) return null;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>public static string 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)) return null;//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>public static byte[] HexStringToByteArray(string s){s = s.Replace(" ", "");byte[] buffer = new byte[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加密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。