鸿蒙Next开发AES128加密,解密算法

以前Android用的是服务器端拷过来的代码,是java的,自然没办法适配鸿蒙是ts的语法。自己翻译着写也是一脸懵逼。
下面我提供下加密的代码
class AES128ECB{

  /**
   * 使用AES对称密钥进行加密,ECB分组
   * ECB、CBC加密模式,AES128,明文需为128位byte字节,即16位字符串,明文长度不是128位整数倍,必须使用填充方法补足
   * @param content
   * @param publicKey
   * @returns 16进制加密结果字符串
   */
  async Encrypt(content: string): Promise<string> {
    let keys = this.base64Trans(‘你的key’)
    let pkBlob: cryptoFramework.DataBlob = { data: base64Util.decodeSync(keys) };
    // 创建密钥对象
    let generator = cryptoFramework.createSymKeyGenerator('AES128');
    // 导入外部密钥
    let globalKey = await generator.convertKey(pkBlob);
    let mode = cryptoFramework.CryptoMode.ENCRYPT_MODE;
    //这里以AES加解密为例,支持AES、SM4、3DES,创建加解密对象
    let globalCipher = cryptoFramework.createCipher('AES128|ECB|PKCS7');
    await globalCipher.init(mode, globalKey, null);
    //将传入的string格式的密钥转为Uint8Array数组
    let plainText: cryptoFramework.DataBlob = { data: stringToUint8Array(content) };
    let encryptData: cryptoFramework.DataBlob = await globalCipher.doFinal(plainText)
    //将加密结果转换为16进制格式,用于保存或者传递
    return uint8ArrayToHexString(encryptData.data).toUpperCase()
  }

  

  base64Trans(keys:string) {
    let base64 = new util.Base64Helper();
    let arr = new Uint8Array(buffer.from(keys).buffer)
    keys = base64.encodeToStringSync(arr);
    return keys
  }

}

export default new AES128ECB();

有需要解密代码的可私信。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值