import QuickCrypto from 'react-native-quick-crypto';
const key = 'rfid@aes-256-cbc_aes-256-cbc@dev'; // 32 bytes for AES-256
const iv = 'rfid@aes-256-cbc'; // 16 bytes for AES block size
export const encryptAes256Cbc = (
? plaintext: string,
): string => {
? try {
? ? // 創(chuàng)建加密器
? ? const cipher = QuickCrypto.createCipheriv('aes-256-cbc', key, iv);
? ? // 加密數(shù)據(jù)
? ? let encrypted = cipher.update(plaintext, 'utf8', 'hex');
? ? encrypted += cipher.final('hex');
? ? return encrypted;
? } catch (error) {
? ? console.error('AES加密失敗:', error);
? ? throw new Error('加密過程中發(fā)生錯(cuò)誤');
? }
};
export const decryptAes256Cbc = (
? ciphertext: string
): string => {
? try {
? ? // 創(chuàng)建解密器
? ? const decipher = QuickCrypto.createDecipheriv('aes-256-cbc', key, iv);
? ? // 解密數(shù)據(jù)
? ? let decrypted = decipher.update(ciphertext, 'hex', 'utf8');
? ? decrypted += decipher.final('utf8');
? ? return decrypted;
? } catch (error) {
? ? console.error('AES解密失敗:', error);
? ? throw new Error('解密過程中發(fā)生錯(cuò)誤');
? }
};
export const aesExample = async () => {
? try {
? ? // 生成密鑰和IV(實(shí)際應(yīng)用中應(yīng)妥善保存密鑰)
? ? const originalText = 'seasa, you are the best!';
? ? // 加密
? ? const encryptedText = encryptAes256Cbc(originalText);
? ? console.log('加密后:', encryptedText);
? ? // 解密
? ? const decryptedText = decryptAes256Cbc(encryptedText);
? ? console.log('解密后:', decryptedText);
? ? return {
? ? ? originalText,
? ? ? encryptedText,
? ? ? decryptedText,
? ? ? key,
? ? ? iv
? ? };
? } catch (error) {
? ? console.error('AES示例出錯(cuò):', error);
? }
};