C#.NET MVC 前端JS的AES加密 C#.NET MVC 前端JS的AES加密JQUERYAJAXAES ECB AES CBC。前端先引用 CryptoJS 库。!-- 引入 CryptoJS -- script srchttps://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js/script !-- 引入 jQuery -- script srchttps://code.jquery.com/jquery-3.6.0.min.js/script封装一个JS函数script function encryptAES_ECB_PKCS7(plaintext, key) { // 将密钥转换为 WordArray const keyBytes CryptoJS.enc.Utf8.parse(key); // 加密配置ECB模式 PKCS7填充 const options { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }; // 执行加密 const encrypted CryptoJS.AES.encrypt(plaintext, keyBytes, options); // 返回 Base64 编码的密文 return encrypted.toString(); } /script加密后向后台API POST请求即可。完整页面{ ViewBag.Title 测试 JS AES 加密; } div classjumbotron h1ASP.NET/h1 input typebutton idsubmitBtn value测试JS AES classbtn btn-primary btn-lg / /div !-- 引入 CryptoJS -- script srchttps://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js/script !-- 引入 jQuery -- script srchttps://code.jquery.com/jquery-3.6.0.min.js/script script function encryptAES_ECB_PKCS7(plaintext, key) { // 将密钥转换为 WordArray const keyBytes CryptoJS.enc.Utf8.parse(key); // 加密配置ECB模式 PKCS7填充 const options { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }; // 执行加密 const encrypted CryptoJS.AES.encrypt(plaintext, keyBytes, options); // 返回 Base64 编码的密文 return encrypted.toString(); } /script script $(document).ready(function () { $(#submitBtn).click(function () { const plaintext Hello, .NET MVC!这是要加密的字符串。; // 16字节密钥AES-128 const key 1234567890123456; // 加密数据 const encryptedData encryptAES_ECB_PKCS7(plaintext, key); // 发送 POST 请求 $.ajax({ url: /Home/About, // 后台 Controller 地址 type: POST, contentType: application/json, data: JSON.stringify({ ciphertext: encryptedData }), success: function (response) { console.log(服务器响应:, response); alert(response.code response.msg); }, error: function (xhr, status, error) { console.error(请求失败:, error); } }); }); }); /script后端实体namespace WebAppJsAES.Models { public class JsAesReq { /// summary /// JS AES 加密后的串 /// /summary public string ciphertext { get; set; } } }后端解密工具类using System.Security.Cryptography; namespace WebAppJsAES.Utils { public class ButtonAesUtil { /// summary /// AES ECB PKCS7 加密 /// /summary /// param namedataByte/param /// param namekey/param /// returns/returns public static byte[] EncryptECB(byte[] dataByte, byte[] key) { var _aes new RijndaelManaged(); _aes.Key key; _aes.Padding PaddingMode.PKCS7; _aes.Mode CipherMode.ECB; var _crypto _aes.CreateEncryptor(); byte[] encrypted _crypto.TransformFinalBlock(dataByte, 0, dataByte.Length); _crypto.Dispose(); return encrypted; } /// summary /// AES ECB PKCS7 解密 /// /summary /// param nameencryptByte/param /// param namekey/param /// returns/returns public static byte[] DecryptECB(byte[] encryptByte, byte[] key) { var _aes new RijndaelManaged(); _aes.Key key; _aes.Padding PaddingMode.PKCS7; _aes.Mode CipherMode.ECB; var _crypto _aes.CreateDecryptor(); byte[] decrypted _crypto.TransformFinalBlock( encryptByte, 0, encryptByte.Length); _crypto.Dispose(); return decrypted; } /// summary /// AES CBC PKCS7 加密 /// /summary /// param nameencryptByte/param /// param namekey/param /// param nameiv/param /// returns/returns public static byte[] EncryptCBC(byte[] encryptByte, byte[] key, byte[] iv) { var _aes new RijndaelManaged(); _aes.Key key; _aes.IV iv; _aes.Padding PaddingMode.PKCS7; _aes.Mode CipherMode.CBC; var _crypto _aes.CreateEncryptor(); byte[] decrypted _crypto.TransformFinalBlock(encryptByte, 0, encryptByte.Length); _crypto.Dispose(); return decrypted; } /// summary /// AES CBC PKCS7 解密 /// /summary /// param nameencryptByte/param /// param namekey/param /// param nameiv/param /// returns/returns public static byte[] DecryptCBC(byte[] encryptByte, byte[] key, byte[] iv) { var _aes new RijndaelManaged(); _aes.Key key; _aes.IV iv; _aes.Padding PaddingMode.PKCS7; _aes.Mode CipherMode.CBC; var _crypto _aes.CreateDecryptor(); byte[] decrypted _crypto.TransformFinalBlock( encryptByte, 0, encryptByte.Length); _crypto.Dispose(); return decrypted; } } }后端API 解密[HttpPost] public ActionResult About(JsAesReq model) { string bodyStr ; if (model ! null !string.IsNullOrWhiteSpace(model.ciphertext)) { //aesKey与前端协商好 string aesKey 1234567890123456; var dataByte ButtonAesUtil.DecryptECB(Convert.FromBase64String(model.ciphertext), Encoding.UTF8.GetBytes(aesKey)); bodyStr Encoding.UTF8.GetString(dataByte); } return Json(new { code 1000, msg 请求成功 bodyStr, }); }效果截图