📅  最后修改于: 2023-12-03 14:50:24.085000             🧑  作者: Mango
在前端开发中,我们经常需要将数据存储在本地,如localStorage或sessionStorage。我们在存储敏感信息时,往往需要使用加密技术来保证数据的安全性。本文将介绍如何使用JavaScript来加密和解密本地存储中的API数据。
我们可以使用JavaScript的Crypto API来加密数据。以下是使用AES算法进行加密的示例代码:
function encryptData(data, key) {
const algorithm = 'AES-GCM';
const iv = window.crypto.getRandomValues(new Uint8Array(12));
const encKey = await window.crypto.subtle.importKey('raw', key, algorithm, false, ['encrypt']);
const encryptedData = await window.crypto.subtle.encrypt({ name: algorithm, iv: iv }, encKey, data);
return { iv, encryptedData };
}
const data = { name: 'John', age: '25' };
const key = Uint8Array.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
const encryptedData = await encryptData(JSON.stringify(data), key);
使用与加密相同的Crypto API来解密数据。以下是使用AES算法进行解密的示例代码:
function decryptData(data, key, iv) {
const algorithm = 'AES-GCM';
const decKey = await window.crypto.subtle.importKey('raw', key, algorithm, false, ['decrypt']);
const decryptedData = await window.crypto.subtle.decrypt({ name: algorithm, iv: iv }, decKey, data);
return new TextDecoder().decode(decryptedData);
}
const decryptedData = await decryptData(encryptedData.encryptedData, key, encryptedData.iv);
console.log(JSON.parse(decryptedData));
将加密后的数据存储在localStorage或sessionStorage中:
localStorage.setItem('encryptedData', JSON.stringify(encryptedData));
从localStorage或sessionStorage中读取加密数据,并解密:
const encryptedData = JSON.parse(localStorage.getItem('encryptedData'));
const decryptedData = await decryptData(encryptedData.encryptedData, key, encryptedData.iv);
console.log(JSON.parse(decryptedData));
使用JavaScript的Crypto API可以轻松加密和解密本地存储中的API数据。这确保了敏感数据的安全,从而保护您的用户数据。