📅  最后修改于: 2023-12-03 14:51:12.899000             🧑  作者: Mango
加密和解密是在计算机编程中非常常见的操作。在 Vanilla JavaScript 中,我们可以使用各种算法和技术来实现这些操作。本文将为你介绍一些常见的加密和解密方法,以及在 Vanilla JavaScript 中如何实现它们。
在 Vanilla JavaScript 中,我们可以使用以下方法来加密数据:
Base64 编码是一种将二进制数据转换为 ASCII 字符的编码方法。可以使用 JavaScript 的 btoa()
函数将字符串转换为 Base64 编码,使用 atob()
函数将 Base64 编码转换为字符串。
// 将字符串编码为 Base64
const encodedString = btoa('Hello, World!');
console.log(encodedString); // "SGVsbG8sIFdvcmxkIQ=="
// 将 Base64 编码解码为字符串
const decodedString = atob('SGVsbG8sIFdvcmxkIQ==');
console.log(decodedString); // "Hello, World!"
单向哈希函数是一种不可逆的加密方法,它将输入数据转换为固定长度的哈希值。在 JavaScript 中,我们可以使用多种哈希算法,如 MD5、SHA-1、SHA-256 等。
// 使用 SHA-256 算法计算字符串的哈希值
function sha256(input) {
const encoder = new TextEncoder();
const data = encoder.encode(input);
return crypto.subtle.digest('SHA-256', data)
.then(buffer => {
const hashArray = Array.from(new Uint8Array(buffer));
const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
return hashHex;
});
}
sha256('Hello, World!')
.then(hash => {
console.log(hash); // "65a8e27d8879283831b664bd8b7f0ad4b756f1b221f44f174fddc9a508c6626b"
});
对称加密算法使用相同的密钥来同时加密和解密数据。在 JavaScript 中,我们可以使用 AES、DES 等对称加密算法。需要使用第三方库来实现这些算法,如 crypto-js
。
// 使用 AES 对称加密算法加密和解密字符串
const key = 'my-secret-key';
const text = 'Hello, World!';
// 加密
const encrypted = CryptoJS.AES.encrypt(text, key).toString();
console.log(encrypted); // "U2FsdGVkX18nqCqPumDLsD/R8wMn04hUguHBmvaPBaE="
// 解密
const decrypted = CryptoJS.AES.decrypt(encrypted, key).toString(CryptoJS.enc.Utf8);
console.log(decrypted); // "Hello, World!"
除了上述加密方法的解密部分,还可以使用其他特定算法来解密数据。
// 举例:解密 Caesar 密码
function caesarDecrypt(ciphertext, shift) {
let plaintext = '';
for (let i = 0; i < ciphertext.length; i++) {
let charCode = ciphertext.charCodeAt(i);
if (charCode >= 65 && charCode <= 90) {
// 大写字母
charCode = (charCode - shift - 65 + 26) % 26 + 65;
} else if (charCode >= 97 && charCode <= 122) {
// 小写字母
charCode = (charCode - shift - 97 + 26) % 26 + 97;
}
plaintext += String.fromCharCode(charCode);
}
return plaintext;
}
const encryptedText = 'Khoor, Zruog!';
const shift = 3;
const decryptedText = caesarDecrypt(encryptedText, shift);
console.log(decryptedText); // "Hello, World!"
在 Vanilla JavaScript 中,我们可以使用多种方法和算法来加密和解密数据。本文提供了三种常见的加密方法,并给出了使用第三方库进行对称加密的示例。你可以根据具体需求选择合适的方法和算法来保护你的数据。无论是使用 Base64 编码、单向哈希函数还是对称加密算法,你都应该在实际应用中注意数据安全和算法的选择。
希望本文对你在 Vanilla JavaScript 中实现加密解密提供了帮助!