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));
}