【Harmony OS】【ARK UI】ets使用第三方类库crypto实现加密解密

在我们的日常开发过程中会经常用到加密解密,数字签名,信息加密是前后端开发经常使用的技术。应用场景包括:用户登录,交易,信息通讯等。
今天分享一下AES加密解密方法,它是通过第三方类库CryptoJS来实现的
1.DevEcoStudio 新建ets项目,在Terminal命令行界面输入
npm install crypto-js --save 下载库
安装完成以后刷新工程会生成node_modules目录

image.png

关于鸿蒙ets项目如何npm方式引入第三方js类库
参考链接:
华为开发者论坛

2.代码如下:

import CryptoJS from 'crypto-js';
@Entry
@Component
struct ParentView {
  public onclieck(){
    console.log("1111111")
    let pas=this.Encrypt(123456+"")
    console.log(this.Decrypt(pas))

  }

//解密方法
  Decrypt(word) {
    const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");  //十六位十六进制数作为密钥
    const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');   //十六位十六进制数作为密钥偏移量
    let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
    let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    console.log(decryptedStr.toString())
    return decryptedStr.toString();
  }

//加密方法
  Encrypt(word) {
    const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");  //十六位十六进制数作为密钥
    const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');   //十六位十六进制数作为密钥偏移量
    let srcs = CryptoJS.enc.Utf8.parse(word);
    let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });

    console.log(encrypted.ciphertext.toString().toUpperCase())
    return encrypted.ciphertext.toString().toUpperCase();
  }

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text('11111')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .onClick(this.onclieck.bind(this))
    }
    .width('100%')
    .height('100%')
  }

}

【注】:加密的时候必须转成字符串,使用toString.解密的时候,必须使用utf8的格式
3运行效果如下:

image.png

参考链接:
前端js几种加密/解密方法 - pinkpolk - 博客园

欲了解更多更全技术文章,欢迎访问:https://developer.huawei.com/consumer/cn/forum/topic/0201802514778160388?fid=0102683795438680754?ha_source=zzh

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值