

JavaScript前端的AES加密与解密实现
source link: https://blog.51cto.com/u_14522578/6010478
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

JavaScript前端的AES加密与解密实现
精选 原创一、CDN插件
可以直接引用线上CDN
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js" integrity="sha512-E8QSvWZ0eCLGk4km3hxSsNmGWbLtSCSUcewDQPQWZF6pEU8GlT8a5fF32wOl1i8ftdMhssTrF/OhyGWwonTcXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
或者保存到本地文件
二、具体实现
1. 字段解释
iv:偏移量 ,16位,可与key一致
message:需要加密的文本信息
plaintext:明文
ciphertext:密文
2. 只需要密钥的加密与解密
<html>
<head>
<meta charset="UTF-8">
<title>基于JavaScript的AES加密与解密实现</title>
</head>
<body>
<script src="js/crypto-js.min.js"></script>
<script type="text/javascript">
var key = "0123456789abcdef"; // 密钥
var message = '1234567890abcdefghigklmnopqrstuvwxyz!@#$%^&*(){}:"<>?|'; // 需要加密的信息
// 加密实现
function encrypt(plaintext) {
var encrypted = CryptoJS.AES.encrypt(plaintext, key);
var ciphertext = encrypted.toString();
return ciphertext;
}
// 解密实现
function decrypt(ciphertext) {
var plaintext = CryptoJS.AES.decrypt(ciphertext, key).toString(CryptoJS.enc.Utf8);
return plaintext;
}
var ciphertext = encrypt(message);
var plaintext = decrypt(ciphertext);
console.log("密文:", ciphertext); // 密文:U2FsdGVkX18GahFCkjnFSAJ0QJuM4dh5sB35cQAsVApQ1zf6AcM2w2jnlenIoaax5VCV390+i1+ZWvrsulYhvPeI+YWl294/SY6D5Os0zvA=
console.log("明文:", plaintext); // 明文:1234567890abcdefghigklmnopqrstuvwxyz!@#$%^&*(){}:"<>?|
</script>
</body>
</html>
3.需要密钥和偏移量的加密与解密
<html>
<head>
<meta charset="UTF-8">
<title>基于JavaScript的AES加密与解密实现</title>
</head>
<body>
<script src="js/crypto-js.min.js"></script>
<script>
var key = CryptoJS.enc.Utf8.parse("0123456789abcdef"); // 密钥
var iv = CryptoJS.enc.Utf8.parse("0123456789abcdef"); // 偏移量
var message = '1234567890abcdefghigklmnopqrstuvwxyz!@#$%^&*(){}:"<>?|'; // 需要加密的信息
// 加密实现
function encrypt(plaintext) {
var encrypted = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
var ciphertext = encrypted.toString();
return ciphertext;
}
// 解密实现
function decrypt(ciphertext) {
var decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
var plaintext = decrypted.toString(CryptoJS.enc.Utf8);
return plaintext;
}
var ciphertext = encrypt(message);
var plaintext = decrypt(ciphertext);
console.log("密文:", ciphertext); // 密文:dbPloHkdKgBH2huMBKZlMkbHSdp4fgoTouVu6ZAHMV1A9Vg+n7VkzwryY6ASpsHuA1sHWQwvJr0mala0L2WAVA==
console.log("明文:", plaintext); // 明文:1234567890abcdefghigklmnopqrstuvwxyz!@#$%^&*(){}:"<>?|
</script>
</body>
</html>
在线验证网址: https://www.ssleye.com/ssltool/aes_cipher.html

- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
-
50
-
43
做360广告的对接需要对密码进行AES加密,下面是点睛平台文档的描述: (AES模式为CBC,加密算法MCRYPT_RIJNDAEL_128)对MD5加密后的密码实现对称加密。秘钥是apiSecret 的前16位,向量是后16位,加密结果为64位数字和小写字母。
-
8
Java 中的加密算法: AES加密算法通常分为对称加密算法和非对称加密算法:对称加密算法(symmetric-key cryptography):加密和解密时使用相同的密钥。常用的对称加密算法有 D...
-
7
逆向工程加密函数:AES 高级加密标准 (AES) 算法是数据加密标准 (DES) 的继承者。随着技术的进步,DES 的密钥长度和较小的块大小使其安全性降低。1997 年,NI...
-
6
前后端交互,密码加密,RSA 实现前端 js 加密,后端 go 解密 Grassto · 3天之前 · 177 次点击 · 预...
-
9
使用 Bouncy Castle DES/AES 加解密-黑暗執行緒 在 .NET 要執行 DES/AES/RSA 加解密不是難事,遠從 .NET 3.5 時代,System.Security.Cryptography 命名空間都已內建相關 API 提供完整支援。不過這些安全相關 API 高度依賴作業系統的原生程式庫,從 .NET...
-
3
在 Javascript 和 PHP 中进行加密和解密✨小透明・宸✨存在感消失的地方|ω•`)home 主页person...
-
4
Golang-AES加密(CBC模式,PKCS7填充) Night_Witcher · 2018-08-16 01:34:43 · 6390 次点击 · 预计阅读时间 3 分钟 · 大约8小时之前 开始浏览 ...
-
8
用 JavaScript 執行 AES 加解密 最近突發奇想,想將系統查詢結果嵌入網頁匯出成 .html,概念上像 Excel 或 Word 一樣是個文件檔,方便 Email 轉寄、歸檔保存,而採用網頁的好處是免裝軟體,用瀏覽器就能開啟,透過 JavaScript 可實現極佳的互...
-
8
解密前端三巨头:HTML、CSS和JavaScript的关系 作者:小狮妹 2023-10-07 10:24:56 HTML、CSS和JavaScript是构建现代网页的三大核心技术,它们虽然看似不同,但在实际中相互协作,共同创造出丰富交互和视觉效果的网...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK