在我们的日常开发过程中会经常用到加密解密,数字签名,信息加密是前后端开发经常使用的技术。应用场景包括:用户登录,交易,信息通讯等。
今天分享一下AES加密解密方法,它是通过第三方类库CryptoJS来实现的
1.DevEcoStudio 新建ets项目,在Terminal命令行界面输入
npm install crypto-js --save 下载库
安装完成以后刷新工程会生成node_modules目录
关于鸿蒙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运行效果如下:
参考链接:
前端js几种加密/解密方法 - pinkpolk - 博客园
欲了解更多更全技术文章,欢迎访问:https://developer.huawei.com/consumer/cn/forum/topic/0201802514778160388?fid=0102683795438680754?ha_source=zzh |