两种JavaScript AES加密实现(兼容Java加解密)

作者:巡夜人时间:2026-10-30 11:31:49浏览:242

本文介绍两种JavaScript AES加密实现,旨在解决JS与强类型后台语言如Java的数据交互问题。第一种方案使用秘钥(key)和偏移量(iv),适用于需要更高安全性的场景;第二种方案仅使用秘钥,实现更简洁。两种方法均通过CryptoJS库实现,并提供在线验证地址及完整代码示例,确保与Java加解密兼容。

JavaScript与Java AES加密互通方案

JavaScript作为弱类型脚本语言,在与强类型后端语言进行数据交互时,常面临数据类型转换及加解密处理等挑战。针对工作中遇到的JavaScript与Java相互加解密难题,经查阅大量资料及代码片段未果后,通过整合多篇文档内容,最终找到可行解决方案。现将具体实现方法整理如下,供参考。

以下详细介绍两种JavaScript AES加密实现方式,具体细节如下。

方案一:使用秘钥与偏移量(Key + IV)

第一种方案:加解密过程需同时使用秘钥(key)和秘钥偏移量(iv)。该方案的在线验证地址为:http://www.seacha.com/tools/aes.html。


//该方法可与Java进行相互加解密<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>需要秘钥(key)及秘钥偏移量(iv)的aes加解密</title>
</head>
<body>
<script src="aes_1.js"></script>  //引入的js文件在该链接中:https://github.com/hellobajie/AES-of-JavaScript
<script>
var key = CryptoJS.enc.Utf8.parse("十六位十六进制数作为秘钥"); 
var iv = CryptoJS.enc.Utf8.parse('十六位十六进制数作为秘钥偏移量'); 
function Encrypt(word){
srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
return encrypted.ciphertext.toString().toUpperCase();
}
function Decrypt(word){ 
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 mm = Encrypt('nihao')
console.log(mm);
var jm = Decrypt(mm);
console.log(jm)
</script>
</body>
</html>//如果想要深度了解每步作用,可以参考:http://zhidao.baidu.com/question/647688575019014285.html?qbl=relate_question_0&word=javascript%20aes 

方案二:仅使用秘钥

第二种方案:加解密过程仅需秘钥,无需偏移量。该方案的在线验证地址为:http://encode.chahuo.com/。


<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>加解密时仅需要秘钥</title>
</head>
<body>
<script src="aes_2.js"></script>  //引入的js文件在该链接中:https://github.com/hellobajie/AES-of-JavaScript
<script type="text/javascript">
var pwd="秘钥";
function Encrypt(word){
return CryptoJS.AES.encrypt(word,pwd).toString();
}
function Decrypt(word){
return CryptoJS.AES.decrypt(word,pwd).toString(CryptoJS.enc.Utf8);
}
var mm = Encrypt('nihao');
console.log(mm)
var jm = Decrypt(mm);
console.log(jm)
</script>
</body>
</html>

以上所述是小编给大家介绍的两种JavaScript的AES加密方式(可与Java相互加解密),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!

作者最新文章