加密解密方法:
1 public class AES256Cipher 2 { 3 public String AES_encrypt(String Input, String key) 4 { 5 RijndaelManaged aes = new RijndaelManaged(); 6 aes.KeySize = 256; 7 aes.BlockSize = 128; 8 aes.Mode = CipherMode.CBC; 9 aes.Padding = PaddingMode.PKCS7; 10 //MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); 11 //byte[] tdesKey = hashmd5.ComputeHash(Encoding.UTF8.GetBytes(key)); 12 aes.Key = Encoding.UTF8.GetBytes(key); //tdesKey; 13 aes.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 14 15 var encrypt = aes.CreateEncryptor(aes.Key, aes.IV); 16 byte[] xBuff = null; 17 using (var ms = new MemoryStream()) 18 { 19 using (var cs = new CryptoStream(ms, encrypt, CryptoStreamMode.Write)) 20 { 21 byte[] xXml = Encoding.UTF8.GetBytes(Input); 22 cs.Write(xXml, 0, xXml.Length); 23 } 24 25 xBuff = ms.ToArray(); 26 } 27 28 String Output = Convert.ToBase64String(xBuff); 29 return Output; 30 } 31 32 public String AES_decrypt(String Input, String key) 33 { 34 RijndaelManaged aes = new RijndaelManaged(); 35 aes.KeySize = 256; 36 aes.BlockSize = 128; 37 aes.Mode = CipherMode.CBC; 38 aes.Padding = PaddingMode.PKCS7; 39 //MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); 40 //byte[] tdesKey = hashmd5.ComputeHash(Encoding.UTF8.GetBytes(key)); 41 aes.Key = Encoding.UTF8.GetBytes(key); 42 aes.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 43 44 var decrypt = aes.CreateDecryptor(); 45 byte[] xBuff = null; 46 using (var ms = new MemoryStream()) 47 { 48 using (var cs = new CryptoStream(ms, decrypt, CryptoStreamMode.Write)) 49 { 50 byte[] xXml = Convert.FromBase64String(Input); 51 cs.Write(xXml, 0, xXml.Length); 52 } 53 54 xBuff = ms.ToArray(); 55 } 56 57 String Output = Encoding.UTF8.GetString(xBuff); 58 return Output; 59 } 60 }
后台调用:
public JsonResult AES_encrypt(string inputStr) { AES256Cipher aes = new AES256Cipher(); string encode = aes.AES_encrypt(inputStr, key); return Json(encode); } public JsonResult AES_decrypt(string inputStr) { AES256Cipher aes = new AES256Cipher(); string decode = aes.AES_decrypt(inputStr, key); return Json(decode); }
前端页面:
<html> <head> <meta name="viewport" content="width=device-width" /> <title>AES256</title> <script src="~/Scripts/jquery-1.10.2.min.js"></script> </head> <body> <div> 输入字符:<input type="text" value="" id="inputStr" /> <input type="button" value="加密" id="encrypt" /> <input type="button" value="解密" id="decrypt" /> <textarea id="txtarea"></textarea> </div> <script type="text/javascript"> $(function () { $("#encrypt").click(function () { $.ajax({ type: "POST", url: "/Home/AES_encrypt", data: { "inputStr": $("#inputStr").val() }, dataType: "json", success: function (data) { $("#txtarea").text(data); }, error: function (json) { alert("数据错误"); } }); }); $("#decrypt").click(function () { $.ajax({ type: "POST", url: "/Home/AES_decrypt", data: { "inputStr": $("#inputStr").val() }, dataType: "json", //async: false, success: function (data) { $("#txtarea").text(data); } }); }); }); </script> </body> </html>
加密界面如图:
解密界面如图: