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 {

    // 创建加密器

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

  }

};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容