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 {
// 创建加密器
const cipher = QuickCrypto.createCipheriv('aes-256-cbc', key, iv);
// 加密数据
let encrypted = cipher.update(plaintext, 'utf8', 'hex');
encrypted += cipher.final('hex');
return encrypted;
} catch (error) {
console.error('AES加密失败:', error);
throw new Error('加密过程中发生错误');
}
};
export const decryptAes256Cbc = (
ciphertext: string
): string => {
try {
// 创建解密器
const decipher = QuickCrypto.createDecipheriv('aes-256-cbc', key, iv);
// 解密数据
let decrypted = decipher.update(ciphertext, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
} catch (error) {
console.error('AES解密失败:', error);
throw new Error('解密过程中发生错误');
}
};
export const aesExample = async () => {
try {
// 生成密钥和IV(实际应用中应妥善保存密钥)
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示例出错:', error);
}
};