先在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);
}
}
鸿蒙中加密库使用
安卓理事人2026-01-17 9:32
相关推荐
SimonKing14 小时前
将cURL 命令直接变成 Java 代码?用JQuick-Curl搞起来大牧师14 小时前
Nest.js 微服务入门教程格林威14 小时前
C# 图像异步落盘存储:基于Channel 配合 ArrayPool 实现异步落盘软件黑马王子14 小时前
11.缓存池优化:窗口布局凤山老林14 小时前
企业级文件服务中台:Spring Boot 集成 MinIO 实现分片存储、生命周期管理与多租户隔离青山木14 小时前
Hot 100 --- 买卖股票的最佳时机程序员良辰15 小时前
Eclipse Memory Analyzer(MAT)入门教程:从生成 Heap Dump 到定位 Java 内存问题深圳市益普科技有限公司15 小时前
半导体MES的数字孪生:虚拟调试如何把上线风险提前清零星栖与芯15 小时前
STM32MP157 M4 指针避坑(三):生命周期与内存踩踏——HardFault 重灾区Maynor99615 小时前
「原子弹爆炸」级别:Astra 复刻游戏合集(含实机截图)