在数字时代,数据安全变得尤为重要。JavaScript(JS)作为前端开发的主要语言之一,在处理敏感数据时,加密解密技术成为保护数据秘密的关键。本文将详细介绍五种实用的JS加密解密方法,帮助你轻松守护数据秘密。
1. Base64编码/解码
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。它常用于在文本中嵌入二进制数据,或用于在不支持二进制数据的媒体中传输数据。
编码示例:
function encodeBase64(str) {
return btoa(str);
}
var encoded = encodeBase64("Hello, World!");
console.log(encoded); // 输出:SGVsbG8sIFdvcmxkIQ==
解码示例:
function decodeBase64(str) {
return atob(str);
}
var decoded = decodeBase64(encoded);
console.log(decoded); // 输出:Hello, World!
2. CryptoJS库
CryptoJS是一个强大的加密库,提供了多种加密算法,如AES、DES、RSA等。
AES加密示例:
var CryptoJS = require("crypto-js");
var key = CryptoJS.enc.Utf8.parse("1234567890123456");
var encrypted = CryptoJS.AES.encrypt("Hello, World!", key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log(encrypted.toString()); // 输出加密后的字符串
AES解密示例:
var decrypted = CryptoJS.AES.decrypt(encrypted.toString(), key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var decryptedStr = CryptoJS.enc.Utf8.stringify(decrypted);
console.log(decryptedStr); // 输出解密后的字符串
3. Web Crypto API
Web Crypto API是现代浏览器提供的一组加密API,支持多种加密算法,如AES-GCM、RSA-OAEP等。
AES-GCM加密示例:
window.crypto.subtle.encrypt(
{
name: "AES-GCM",
iv: window.crypto.getRandomValues(new Uint8Array(12)), // 初始化向量
},
key,
new TextEncoder().encode("Hello, World!")
).then((encrypted) => {
console.log(new Uint8Array(encrypted)); // 输出加密后的数据
});
AES-GCM解密示例:
window.crypto.subtle.decrypt(
{
name: "AES-GCM",
iv: window.crypto.getRandomValues(new Uint8Array(12)), // 初始化向量
},
key,
encrypted
).then((decrypted) => {
console.log(new TextDecoder().decode(decrypted)); // 输出解密后的字符串
});
4. Hash函数
Hash函数是一种将任意长度的输入数据映射为固定长度输出数据的函数。常见的Hash函数有MD5、SHA-1、SHA-256等。
SHA-256加密示例:
var CryptoJS = require("crypto-js");
var hash = CryptoJS.SHA256("Hello, World!");
console.log(hash.toString()); // 输出加密后的字符串
5. RSA加密解密
RSA是一种非对称加密算法,它使用两个密钥:公钥和私钥。
RSA加密示例:
var CryptoJS = require("crypto-js");
var publicKey = CryptoJS.RSA.construct({
n: new CryptoJS.lib.WordArray.fromArray([/* 公钥的n部分 */]),
e: 65537
});
var encrypted = CryptoJS.AES.encrypt("Hello, World!", publicKey.n, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log(encrypted.toString()); // 输出加密后的字符串
RSA解密示例:
var privateKey = CryptoJS.RSA.construct({
n: new CryptoJS.lib.WordArray.fromArray([/* 私钥的n部分 */]),
e: 65537,
d: new CryptoJS.lib.WordArray.fromArray([/* 私钥的d部分 */])
});
var decrypted = CryptoJS.AES.decrypt(encrypted.toString(), privateKey.n, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log(decrypted.toString()); // 输出解密后的字符串
通过以上五种方法,你可以轻松地在JavaScript中实现加密解密操作,从而保护你的数据秘密。在实际应用中,请根据具体需求选择合适的加密解密方法,并确保密钥的安全性。
