标签:类库 ets enc crypto iv parse let toString CryptoJS
在我们的日常开发过程中会经常用到加密解密,数字签名,信息加密是前后端开发经常使用的技术。应用场景包括:用户登录,交易,信息通讯等。
今天分享一下AES加密解密方法,它是通过第三方类库CryptoJS来实现的
1.DevEcoStudio 新建ets项目,在Terminal命令行界面输入
npm install crypto-js --save 下载库
安装完成以后刷新工程会生成node_modules目录
关于鸿蒙ets项目如何npm方式引入第三方js类库
参考链接:
https://developer.huawei.com/consumer/cn/forum/topic/0202769537680520280?fid=0102683795438680754
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运行效果如下:
参考链接:
https://www.cnblogs.com/pinkpolk/articles/13600696.html
标签:类库,ets,enc,crypto,iv,parse,let,toString,CryptoJS 来源: https://www.cnblogs.com/developer-huawei/p/16532814.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。