先在oh-package.json5中引用库 "@ohos/crypto-js": "2.0.5" 在创建工具类,供外部调用 // CryptoUtils.ts import { CryptoJS } from '@ohos/crypto-js'; export class DesEncryptorJS { /** * DES 加密(ECB + PKCS7) * @param data 明文 * @param keyStr 密钥(会自动补齐 8 位) * @returns Base64 加密结果 */ static desEncrypt(data: string, keyStr: string): string { // DES key 必须 8 字节 let key = keyStr.padEnd(8, '0'); let parsedKey = CryptoJS.enc.Utf8.parse(key); let encrypted = CryptoJS.DES.encrypt(data, parsedKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return encrypted.toString(); } /** * DES 解密(ECB + PKCS7) * @param encryptedData Base64 密文 * @param keyStr 密钥 * @returns 明文 */ static desDecrypt(encryptedData: string, keyStr: string): string { let key = keyStr.padEnd(8, '0'); let parsedKey = CryptoJS.enc.Utf8.parse(key); let decrypted = CryptoJS.DES.decrypt(encryptedData, parsedKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return decrypted.toString(CryptoJS.enc.Utf8); } /** * AES 加密(默认 ECB + PKCS7) * @param data 明文 * @param keyStr 密钥(16/24/32 字节) * @returns Base64 密文 */ static aesEncrypt(data: string, keyStr: string): string { let key = CryptoJS.enc.Utf8.parse(keyStr); let encrypted = CryptoJS.AES.encrypt(data, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return encrypted.toString(); } /** * AES 解密 * @param encryptedData Base64 密文 * @param keyStr 密钥 * @returns 明文 */ static aesDecrypt(encryptedData: string, keyStr: string): string { let key = CryptoJS.enc.Utf8.parse(keyStr); let decrypted = CryptoJS.AES.decrypt(encryptedData, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return decrypted.toString(CryptoJS.enc.Utf8); } /** * MD5 加密 * @param data 明文 * @returns MD5 十六进制字符串 */ static md5(data: string): string { return CryptoJS.MD5(data).toString(CryptoJS.enc.Hex); } }鸿蒙中加密库使用
张小明
前端开发工程师
理想全模态大模型团队实战:从零打造智能工具,解决企业真实痛点,程序员必看技术落地案例
Ideal全模态大模型创新工作坊采用"资深专家领航、青年骨干攻坚"模式,成功研发智能文档审核系统、"人效问数助手"等工具,解决文档审核、数据查询等业务痛点。团队攻克上海话识别、算力不足等技术难题,参与数字人项目开发&…
AI大模型入门必看:AGI、RAG、AIGC核心概念详解,收藏不迷路
文章用通俗易懂的语言解释了AI大模型的三大核心术语:AGI(通用人工智能,具备人类水平广泛认知能力)、RAG(检索增强生成,结合外部知识库提升内容准确性)和AIGC(人工智能生成内容&#…
30岁转行AI大模型,别让时间再浪费!收藏这份高薪学习资源包_30岁转行AI大模型!
文章详细介绍了AI大模型行业的广阔前景和薪资水平,涵盖算法工程师、数据科学家等多样化就业岗位,提供从入门到进阶的7阶段系统学习路线,并包含报告合集、经典书籍和实战案例等全套学习资源,强调系统学习对掌握这一高需求、高待遇热…
c++设计模式-代理模式
一、模式简介代理模式是一种结构型设计模式,通过引入代理对象(Proxy),实现客户端(Client)间接访问主题对象(Subject)。 优势: 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功…
基于STM32的字符识别系统:源码、原理图、PCBDoc、原件清单及实物全包
基于stm32的字符识别系统,包含源码、原理图、PCBDoc、原件清单、实物等。 该程序可极速识别手机或电脑显示屏的字符(中文英文符号等),达到条件自动驱动外设工作。 处理速度非常快,视频演示的程序是增加了延时的&#x…
降级不降志!青岛红狮公开试训,传递继续征战的强烈信号
当中超、中甲各队正为新赛季厉兵秣马时,一支刚刚经历降级的球队,用一份掷地有声的公告,向外界宣告了其不屈的斗志。1月13日,上赛季从中甲降级的青岛红狮足球俱乐部,正式发布试训公告,面向全社会公开招募优秀…