本文详细介绍在原生JavaScript中实现加密与解密的方法。重点讲解如何使用crypto.js库进行AES、SHA256及MD5等多种加密方式,以及如何通过JavaScript-MD5库处理MD5和HMAC-MD5哈希计算。包含具体代码示例、API参数说明及编码工具用法,帮助开发者快速掌握前端数据加密技术。
目前原生JavaScript似乎并未内置MD5计算的相关函数或方法,开发者通常需要自行实现,或者采用社区中已有的成熟解决方案。
一、使用crypto.js库进行加密
前往GitHub仓库 https://github.com/brix/crypto-js 下载该JavaScript库文件。
该库支持单独引入特定加密方式的JS文件,也可以直接引入crypto-js.js主文件,后者包含了所有支持的加密算法。
具体用法如下:
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
var encrypted = CryptoJS.AES(...);
var encrypted = CryptoJS.SHA256(...);
</script>1、示例演示:
Hash加密示例:
//加密实例一
console.log("加密结果一 MD5:"+CryptoJS.MD5("你好"));
//加密实例二
var pwd="passwor";
console.log("加密结果二 Hmac-MD5: "+CryptoJS.HmacMD5("你好",pwd));AES对称加密示例:
普通文本加密场景
// 加密
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
// 解密
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(originalText); // 'my message'对象数据加密场景
var data = [{id: 1}, {id: 2}]
// 加密
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
// 解密
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
console.log(decryptedData); // [{id: 1}, {id: 2}]自定义密钥与初始向量(Custom Key and IV)
var key = CryptoJS.enc.Utf8.parse('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); //密钥
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
// 加密
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
// 解密
var decrypted =CryptoJS.AES.decrypt(encrypted,key,
{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
var originalText = decrypted.toString(CryptoJS.enc.Utf8); 分块模式与填充方式(Block Modes and Padding)
var key = CryptoJS.enc.Utf8.parse('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); //密钥
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
var encrypted =CryptoJS.AES.encrypt("Message", ,key,
{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
}); //返回的是base64格式的密文2、API接口说明
详细文档请参阅:https://cryptojs.gitbook.io/docs/
编码转换工具:
var words = CryptoJS.enc.Base64.parse("SGVsbG8sIFdvcmxkIQ==");
var base64 = CryptoJS.enc.Base64.stringify(words);
var words = CryptoJS.enc.Hex.parse("48656c6c6f2c20576f726c6421");
var hex = CryptoJS.enc.Hex.stringify(words);
var words = CryptoJS.enc.Utf8.parse("");
var utf8 = CryptoJS.enc.Utf8.stringify(words);二、使用JavaScript-MD5库进行加密
从GitHub仓库 https://github.com/blueimp/JavaScript-MD5 下载该JavaScript库。
具体使用示例如下:
计算给定字符串值的十六进制编码MD5哈希值:
var hash = md5('value') // "2063c1608d6e0baf80249c42e2be5804"
var v1= md5('{"name":"嘻嘻嘻嘻嘻嘻嘻嘻嘻","age":22}'); //56b21847ed32d2d96cf74077b22342eb计算给定字符串值和密钥的十六进制编码HMAC-MD5哈希值:
var hash = md5('value', 'key') // "01433efd5f16327ea4b31144572c67f6"计算给定字符串值的原始MD5哈希值:
var hash = md5('value', null, true)计算给定字符串值和密钥的原始HMAC-MD5哈希值:
var hash = md5('value', 'key', true)至此,关于JavaScript实现加密与解密的详细介绍已完毕。希望上述内容能对各位的学习有所帮助,同时也欢迎大家继续支持本站。