码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【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.代码如下:

    1. import CryptoJS from 'crypto-js';
    2. @Entry
    3. @Component
    4. struct ParentView {
    5. public onclieck(){
    6. console.log("1111111")
    7. let pas=this.Encrypt(123456+"")
    8. console.log(this.Decrypt(pas))
    9. }
    10. //解密方法
    11. Decrypt(word) {
    12. const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥
    13. const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量
    14. let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
    15. let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    16. let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
    17. let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    18. console.log(decryptedStr.toString())
    19. return decryptedStr.toString();
    20. }
    21. //加密方法
    22. Encrypt(word) {
    23. const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥
    24. const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量
    25. let srcs = CryptoJS.enc.Utf8.parse(word);
    26. let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
    27. console.log(encrypted.ciphertext.toString().toUpperCase())
    28. return encrypted.ciphertext.toString().toUpperCase();
    29. }
    30. build() {
    31. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
    32. Text('11111')
    33. .fontSize(50)
    34. .fontWeight(FontWeight.Bold)
    35. .onClick(this.onclieck.bind(this))
    36. }
    37. .width('100%')
    38. .height('100%')
    39. }
    40. }

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

    image.png

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

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

     

  • 相关阅读:
    Spring注解驱动之ApplicationListener用法
    java毕业生设计校园讲座管理计算机源码+系统+mysql+调试部署+lw
    物联网之ESP32与微信小程序实现指示灯、转向灯
    拷贝构造函数(深拷贝+浅拷贝)
    C专家编程 第10章 再论指针 10.8 轻松一下---程序检验的限制
    黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable
    【JavaScript】浏览器调试控制台console的功能有了解多少
    Istio1.12:安装和快速入门
    【附源码】计算机毕业设计JAVA校园教育服务平台
    化整为零优化重用,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang函数的定义和使用EP07
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/126058262
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号