【问题】API12 上如何用@ohos/crypto-js实现DES加解密
【环境】系统:HarmonyOS Next Beta 版本 , SDK:API 12, @ohos/crypto-js 版本为:2.0.4-rc.1
【解决方法】
1.IDE 终端执行命令:
ohpm install @ohos/crypto-js
2.引入依赖
最新版本支持
import { CryptoJS } from '@ohos/crypto-js' 或者
import CryptoJS from '@ohos/crypto-js'
3.DES一次加密:
/*
* DES 加密
* @param text: 待加密文本
* @param key: 生成对称加密密钥的key(8位) 如:mUXd2Nay
* @param iv: 向量
* */
DESEncryptToString(text : string , key : string , iv : string) : string {
const text1: CryptoJS.lib.WordArray = CryptoJS.enc.Utf8.parse(text); //明文
const key1: CryptoJS.lib.WordArray = CryptoJS.enc.Utf8.parse(key); //密钥
const iv1: CryptoJS.lib.WordArray = CryptoJS.enc.Utf8.parse(iv);//向量
let encryptedData: string = CryptoJS.enc.Base64.stringify(CryptoJS.DES.encrypt(text1, key1, {
iv: iv1,
mode: CryptoJS.mode.CBC, //模式
padding: CryptoJS.pad.Pkcs7 // 填充量
}).ciphertext);
return encryptedData;
}
4.DES一次解密:
/*
* DES 解密
* @param decryptText: 待解密文本
* @param key: 生成对称加密密钥的key(8位) 如:mUXd2Nay
* @param iv: 向量
* */
DESDecryptToString(decryptText : string , key : string , iv : string) : string {
let key1 : CryptoJS.lib.WordArray = CryptoJS.enc.Utf8.parse(key);//key
let iv1 : CryptoJS.lib.WordArray = CryptoJS.enc.Utf8.parse(iv); //向量
let decryptedData : string = CryptoJS.DES.decrypt(decryptText, key1, {
iv: iv1,
mode: CryptoJS.mode.CBC,//模式
padding: CryptoJS.pad.Pkcs7 //填充方式
}).toString();
let result: string = buffer.from(decryptedData.toString(), 'hex').toString(); //fix DES 解密中文乱码问题
return result
}