📜  加密和解密本地存储中的 api 数据 (1)

📅  最后修改于: 2023-12-03 14:50:24.085000             🧑  作者: Mango

加密和解密本地存储中的API数据

介绍

在前端开发中,我们经常需要将数据存储在本地,如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数据。这确保了敏感数据的安全,从而保护您的用户数据。