在JavaScript编程中,字符串加密与解密是一项常见且重要的技能。它可以帮助我们保护敏感信息,防止数据泄露。本文将揭秘一些常用的JavaScript代码解码技巧,帮助您轻松掌握字符串加密与解密方法。
一、基础概念
在开始之前,我们需要了解一些基础概念:
- 加密:将原始数据(明文)转换为无法直接识别的数据(密文)的过程。
- 解密:将加密后的数据(密文)转换回原始数据(明文)的过程。
二、常用加密算法
JavaScript中常用的加密算法有:
- Base64编码:将二进制数据转换为ASCII字符集表示的字符串。
- AES加密:一种对称加密算法,使用相同的密钥进行加密和解密。
- RSA加密:一种非对称加密算法,使用公钥加密和私钥解密。
1. Base64编码
Base64编码是一种简单的编码方法,可以用于数据的传输和存储。以下是一个使用Base64编码和解码的示例:
// Base64编码
const originalString = 'Hello, world!';
const encodedString = btoa(originalString);
console.log(encodedString); // 输出:SGVsbG8sIFdvcmxkIQ==
// Base64解码
const decodedString = atob(encodedString);
console.log(decodedString); // 输出:Hello, world!
2. AES加密
AES加密是一种常用的对称加密算法。以下是一个使用CryptoJS库进行AES加密和解密的示例:
// 引入CryptoJS库
const CryptoJS = require('crypto-js');
// AES加密
const key = CryptoJS.enc.Utf8.parse('1234567890123456'); // 16字节密钥
const encrypted = CryptoJS.AES.encrypt('Hello, world!', key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
console.log(encrypted.toString()); // 输出加密后的字符串
// AES解密
const decrypted = CryptoJS.AES.decrypt(encrypted.toString(), key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
const decryptedStr = CryptoJS.enc.Utf8.stringify(decrypted);
console.log(decryptedStr); // 输出解密后的字符串
3. RSA加密
RSA加密是一种非对称加密算法,可以用于公钥加密和私钥解密。以下是一个使用Node.js的crypto模块进行RSA加密和解密的示例:
const crypto = require('crypto');
// 生成RSA密钥对
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem'
}
});
// RSA加密
const encrypted = crypto.publicEncrypt(publicKey, Buffer.from('Hello, world!'));
console.log(encrypted.toString('hex')); // 输出加密后的字符串
// RSA解密
const decrypted = crypto.privateDecrypt(privateKey, Buffer.from(encrypted, 'hex'));
console.log(decrypted.toString()); // 输出解密后的字符串
三、总结
本文介绍了JavaScript中常用的字符串加密与解密方法,包括Base64编码、AES加密和RSA加密。通过学习这些技巧,您可以轻松地保护敏感信息,防止数据泄露。在实际应用中,请根据具体需求选择合适的加密算法,并确保密钥的安全。