在Python和JavaScript中進行數據加密和解密,通常需要使用一些加密庫。這里我將分別為你提供Python和JavaScript的示例代碼,以展示如何使用AES加密和解密數據。
Python 示例:
首先,你需要安裝pycryptodome
庫,可以使用以下命令安裝:
pip install pycryptodome
然后,你可以使用以下代碼進行AES加密和解密:
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
import base64
def encrypt(data, key):
cipher = AES.new(key, AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
iv = base64.b64encode(cipher.iv).decode('utf-8')
ct = base64.b64encode(ct_bytes).decode('utf-8')
return iv + ':' + ct
def decrypt(encrypted_data, key):
iv, ct = encrypted_data.split(':')
iv = base64.b64decode(iv)
ct = base64.b64decode(ct)
cipher = AES.new(key, AES.MODE_CBC, iv)
return unpad(cipher.decrypt(ct), AES.block_size).decode('utf-8')
key = get_random_bytes(16)
data = 'Hello, World!'
encrypted_data = encrypt(data, key)
print('Encrypted data:', encrypted_data)
decrypted_data = decrypt(encrypted_data, key)
print('Decrypted data:', decrypted_data)
JavaScript 示例:
在JavaScript中,你可以使用crypto-js
庫進行AES加密和解密。首先,你需要安裝這個庫:
npm install crypto-js
然后,你可以使用以下代碼進行AES加密和解密:
const CryptoJS = require('crypto-js');
function encrypt(data, key) {
const iv = CryptoJS.lib.WordArray.random(16);
const encrypted = CryptoJS.AES.encrypt(data, key, { iv: iv });
return iv.concat(encrypted.ciphertext).toString(CryptoJS.enc.Base64);
}
function decrypt(encryptedData, key) {
const [iv, ciphertext] = encryptedData.split(':');
const decodedIV = CryptoJS.enc.Base64.parse(iv);
const decodedCiphertext = CryptoJS.enc.Base64.parse(ciphertext);
const decrypted = CryptoJS.AES.decrypt({ ciphertext: decodedCiphertext }, key, { iv: decodedIV });
return decrypted.toString(CryptoJS.enc.Utf8);
}
const key = CryptoJS.lib.WordArray.random(16).toString();
const data = 'Hello, World!';
const encryptedData = encrypt(data, key);
console.log('Encrypted data:', encryptedData);
const decryptedData = decrypt(encryptedData, key);
console.log('Decrypted data:', decryptedData);
這些示例代碼展示了如何在Python和JavaScript中使用AES加密和解密數據。請注意,為了確保數據安全,你需要妥善保管加密密鑰。