HarmonyOS AES解密报错
我有一段 aes 加密的字符串,已确定该段字符串可以正常解析,解析后是一段json
但是我使用如下所示的 EncryptUtils.aesDecrypt() 进行aes 解密报错,是哪里不对
EncryptUtils.aesEncrypt() 是正确的能正常运行逻辑
import cryptoFramework from '@ohos.security.cryptoFramework';
import util from '@ohos.util';
import buffer from '@ohos.buffer';
export default class EncryptUtils {
// aes 加密 key
private static readonly AES_KEY = "sgg45xxxx23455";
// aes 偏移向量
private static readonly AES_IV = "8NONxxxxxxysWpM";
static async aesEncrypt(content: string): Promise<string> {
let symKey = await EncryptUtils.genSymKeyByData()
let iv = EncryptUtils.genIvParamsSpec();
let cipher = cryptoFramework.createCipher("AES128|CBC|PKCS7");
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, iv)
let cipherData = await cipher.doFinal({
data: new Uint8Array(buffer.from(content, 'utf-8').buffer)
})
let that = new util.Base64Helper();
let result = that.encodeToStringSync(cipherData.data)
return result;
}
static async aesDecrypt(content: string): Promise<string> {
let symKey = await EncryptUtils.genSymKeyByData()
let iv = EncryptUtils.genIvParamsSpec();
let decoder = cryptoFramework.createCipher('AES128|CBC|PKCS7');
await decoder.init(cryptoFramework.CryptoMode.DECRYPT_MODE, symKey, iv);
let plainText: cryptoFramework.DataBlob = {
data: new Uint8Array(buffer.from(content, 'utf-8').buffer)
};
let decryptData = await decoder.doFinal(plainText);
let that = new util.Base64Helper();
let result = that.encodeToStringSync(decryptData.data)
return result;
}
private static genIvParamsSpec() {
const dataIv = EncryptUtils.strToUint8Array(EncryptUtils.AES_IV);
let ivBlob: cryptoFramework.DataBlob = {data: dataIv};
let ivParamsSpec: cryptoFramework.IvParamsSpec = {
algName: "IvParamsSpec",
iv: ivBlob
};
return ivParamsSpec;
}
private static async genSymKeyByData() {
let aesGenerator = cryptoFramework.createSymKeyGenerator('AES128');
let pubKey = EncryptUtils.strToUint8Array(EncryptUtils.AES_KEY);
let pubKeyBlob: cryptoFramework.DataBlob = {
data: pubKey
};
let symKey = await aesGenerator.convertKey(pubKeyBlob)
return symKey;
}
private static strToUint8Array(str: string): Uint8Array {
const arr: number[] = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
return new Uint8Array(arr);
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
RSA加密,使用自有私钥解密报错
43浏览 • 1回复 待解决
使用AES CBC模式加解密,convertKey报错401
34浏览 • 1回复 待解决
HarmonyOS AES加解密与java无法通用
353浏览 • 1回复 待解决
解密中文乱码 :CryptoJS鸿蒙版aes解密,中文乱码
1176浏览 • 1回复 待解决
使用AES解密时,一直在报解密异常
38浏览 • 1回复 待解决
cryptoFramework.createCipher,可否提供AES解密的例子?
649浏览 • 1回复 待解决
AES加解密无法使用,有人知道原因吗?
33浏览 • 1回复 待解决
AES加解密长字符串是否需要分段
444浏览 • 1回复 待解决
HarmonyOS AES加解密第三方开源工具类库
424浏览 • 1回复 待解决
如何进行不同规格的AES加解密
647浏览 • 1回复 待解决
如何对二进制进行AES解密?
40浏览 • 1回复 待解决
HarmonyOS 针对流形式文件(zip文件)AES解密,再zip解压
365浏览 • 1回复 待解决
HarmonyOS 如何实现AES_128_ECB_PKCS5Padding加解密算法?
515浏览 • 1回复 待解决
参数做aes解密会失败,是哪里参数配置不对吗,分段解密和一次性解密都试了?
32浏览 • 1回复 待解决
加解密HmacSha1 、HmacSha256、aes参考Demo
1923浏览 • 1回复 待解决
使用AES对称密钥(CBC模式)加解密,生成symKey失败
35浏览 • 1回复 待解决
AES分段加解密,分组模式采用CBC,填充方式采用PKCS7,对超大量数据进行分段加解密
1023浏览 • 1回复 待解决
MySQL 原生的aes_encrypt加密的Key为空字符串,怎么在代码里解密?
2035浏览 • 1回复 待解决
HarmonyOS AES CBC加密问题
329浏览 • 1回复 待解决
有没有高性能的AES加解密组件,使用ohos/crypto-js解密比较大的数据(约300K)时会卡死?
40浏览 • 1回复 待解决
HarmonyOS 加解密 demo
350浏览 • 1回复 待解决
使用32字节秘钥加解密后报错
1540浏览 • 1回复 待解决
HarmonyOS RSA解密问题
317浏览 • 1回复 待解决
HarmonyOS des解密耗时过长,使用了官方的解密库或者第三方的CryptoJS解密库,解密耗时都很长
236浏览 • 1回复 待解决
des解密同步方法解密失败
38浏览 • 1回复 待解决
密文在加密时通常会被编码为Base64格式,解密时需要先将Base64编码的密文解码回原始的二进制格式。需要在解密之前使用Base64解码密文字符串,然后再将其传递给 doFinal 方法进行解密。可参考: