javascript前台代码
<script src="http://apps.bdimg.com/libs/crypto-js/3.1.2/components/core-min.js"></script> <script src="http://apps.bdimg.com/libs/crypto-js/3.1.2/components/enc-utf16-min.js"></script> <script src="http://apps.bdimg.com/libs/crypto-js/3.1.2/components/sha1-min.js"></script> <script src="http://apps.bdimg.com/libs/crypto-js/3.1.2/components/md5-min.js"></script> <script src="http://apps.bdimg.com/libs/crypto-js/3.1.2/rollups/aes.js"></script> <script> function ajaxdecrypt() { var keystr = CryptoJS.enc.Utf16LE.parse($("#projectSign").val()); var keymd5 = CryptoJS.MD5(keystr); var key = keymd5.toString(CryptoJS.enc.Hex); $.post("DecryptAes", { cipher: $("#txt").val(), key: key, iv: key }, function (result) { $("#txt").val(result); }); } function encrypt() { var plantstr = $("#userSign").val(); var plant = CryptoJS.enc.Utf16LE.parse(plantstr); var keystr = CryptoJS.enc.Utf16LE.parse($("#projectSign").val()); var keymd5 = CryptoJS.MD5(keystr).toString(CryptoJS.enc.Hex); var key = CryptoJS.enc.Hex.parse(keymd5); //var encrypted = CryptoJS.AES.encrypt(plant, key, { iv: key, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); var encrypted = CryptoJS.AES.encrypt(plant, key, { iv: key }); $("#txt").val(encrypted); } function decrypt() { var cipherstr = $("#txt").val(); var keystr = CryptoJS.enc.Utf16LE.parse($("#projectSign").val()); var keycode = CryptoJS.MD5(keystr).toString(CryptoJS.enc.Hex); var key = CryptoJS.enc.Hex.parse(keycode); var plantstr = CryptoJS.AES.decrypt(cipherstr, key, { iv: key }); var plant = CryptoJS.enc.Utf16LE.stringify(plantstr); $("#passwordSign").val(plant); } </script>
C#后台
public ActionResult DecryptAes(string cipher,string key,string iv) { AesManaged aes = new AesManaged(); aes.Key = HexStringToBytes(key); aes.IV = HexStringToBytes(iv); //aes.Mode = CipherMode.CBC; //aes.Padding = PaddingMode.Zeros; ICryptoTransform de = aes.CreateDecryptor(); byte[] cipherBytes = Convert.FromBase64String(cipher); byte[] plantBytes = de.TransformFinalBlock(cipherBytes,0,cipherBytes.Length); return Content(Encoding.Unicode.GetString(plantBytes)); }