crypto 加密

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);

? }

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容