JS-AES加密-crypto.js
阿新 • • 發佈:2021-02-09
技術標籤:Javascriptjs加密
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<title>JS的AES加密解密方法詳解(CryptoJS)</title>
<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/aes.min.js"></script>
<script src="/jquery-3.3.0.min.js" ></script>
</head>
<body>
<script>
//aes加密
function encrypt(word){
//金鑰16位
var key = CryptoJS.enc.Utf8.parse("WELEARNINGSTRONG");
//加密向量16位
var iv = CryptoJS.enc.Utf8.parse("sinostrong365com");
var encrypted = '';
if (typeof(word) == 'string') {
var srcs = CryptoJS.enc.Utf8.parse(word);
encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
} else if (typeof(word) == 'object') { //物件格式的轉成json字串
data = JSON.stringify(word);
var srcs = CryptoJS.enc.Utf8.parse(data);
encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
}
return encrypted.ciphertext.toString();
}
// aes解密
function decrypt(word) {
var key = CryptoJS.enc.Utf8.parse("WELEARNINGSTRONG");
var iv = CryptoJS.enc.Utf8.parse("sinostrong365com");
var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
//加密
var encrypt_string = '{"username":"admin","password":"123456"}';
var encrypted_string = encrypt(encrypt_string);
console.log("加密後:" + encrypted_string);
//解密
var decrypt_string = encrypted_string;
var decrypted_string = decrypt(decrypt_string);
console.log("解密後:" + decrypted_string);
</script>
</body>
</html>