JavaScript 中的数字加密通常涉及到对敏感数据的保护,以防止未经授权的访问。加密是一种安全技术,用于将明文数据转换为看似随机的密文数据,只有拥有正确密钥的人才能解密并读取原始数据。
以下是一个使用 JavaScript 的 crypto
模块进行 AES 加密和解密的简单示例:
const crypto = require('crypto');
// 密钥和初始化向量(IV)
const key = crypto.randomBytes(16); // 128位密钥
const iv = crypto.randomBytes(16); // 16字节IV
function encrypt(text) {
let cipher = crypto.createCipheriv('aes-128-cbc', Buffer.from(key), iv);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return { iv: iv.toString('hex'), encryptedData: encrypted.toString('hex') };
}
function decrypt(hash) {
let iv = Buffer.from(hash.iv, 'hex');
let encryptedText = Buffer.from(hash.encryptedData, 'hex');
let decipher = crypto.createDecipheriv('aes-128-cbc', Buffer.from(key), iv);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
return decrypted.toString();
}
// 使用示例
let text = "Hello World";
let encrypted = encrypt(text);
console.log("Encrypted:", encrypted);
let decrypted = decrypt(encrypted);
console.log("Decrypted:", decrypted);
问题:加密后的数据在传输过程中被篡改。
原因:数据在传输过程中可能被未经授权的第三方拦截并修改。
解决方法:使用消息认证码(MAC)或数字签名来验证数据的完整性。例如,可以使用 HMAC(基于哈希的消息认证码):
const hmac = crypto.createHmac('sha256', key);
hmac.update(text);
let hash = hmac.digest('hex');
console.log("HMAC:", hash);
在接收端,可以重新计算 HMAC 并与发送端提供的 HMAC 进行比较,以确保数据未被篡改。
通过这些方法,可以在 JavaScript 中实现数字加密,保护数据的安全性和完整性。
领取专属 10元无门槛券
手把手带您无忧上云