使用AES对称密钥(CBC模式)加解密,生成symKey失败
使用官方代码进行AES解密数据,生成symKey失败。
传入参数秘钥key:f951cbcc2d3d8f4de802744d8fe6103d
传入参数iv:563b7a6e46394561b9cd6e93564f1632
代码如下:
import cryptoFramework from '@ohos.security.cryptoFramework';
import buffer from '@ohos.buffer';
/**
* AES解密方法
* @param key 秘钥
* @param iv
* @param data 待解密数据
* @returns
*/
export async function aes128CBC_decrypt(key:string,iv:string,data:ArrayBuffer):Promise<cryptoFramework.DataBlob> {
let keyData = new Uint8Array(buffer.from(key, 'utf-8').buffer);
// let keyData = stringToUint8Array(key);
let length = key.length;
let symKey = await genSymKeyByData(keyData);
let decryptData: cryptoFramework.DataBlob = { data: new Uint8Array(data) };
let decryptDataSuccess = await decryptMessagePromise(symKey,iv,decryptData);
return decryptDataSuccess;
}
//生成CBC模式的ivParamsSpec
function genIvParamsSpec(iv:string) {
let dataIv = stringToUint8Array(iv);
let ivBlob: cryptoFramework.DataBlob = { data: dataIv };
let ivParamsSpec: cryptoFramework.IvParamsSpec = {
algName: "IvParamsSpec",
iv: ivBlob
};
return ivParamsSpec;
}
//生成密钥算法为AES、密钥长度为128位的对称密钥(SymKey)
async function genSymKeyByData(symKeyData: Uint8Array) {
let symKeyBlob: cryptoFramework.DataBlob = { data: symKeyData };
let aesGenerator = cryptoFramework.createSymKeyGenerator('AES128');
let symKey = await aesGenerator.convertKey(symKeyBlob);//---错误步骤
console.info('convertKey success');
return symKey;
}
// 解密消息
async function decryptMessagePromise(symKey: cryptoFramework.SymKey,iv:string, cipherText: cryptoFramework.DataBlob) {
let decoder = cryptoFramework.createCipher('AES128|CBC|PKCS7');
let ivParamsSpec = genIvParamsSpec(iv);
await decoder.init(cryptoFramework.CryptoMode.DECRYPT_MODE, symKey, ivParamsSpec);
let decryptData = await decoder.doFinal(cipherText);
return decryptData;
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 使用AES对称密钥(CBC模式)加解密
976浏览 • 1回复 待解决
HarmonyOS 使用3DES对称密钥如何进行 CBC模式加解密
1079浏览 • 1回复 待解决
使用AES CBC模式加解密,convertKey报错401
1524浏览 • 1回复 待解决
HarmonyOS AES-CBC加解密
1138浏览 • 1回复 待解决
HarmonyOS 对称加密不支持AES|CBC|NoPadding模式
1108浏览 • 1回复 待解决
如何使用SM4的CBC模式加解密
3219浏览 • 1回复 待解决
AES分段加解密,分组模式采用CBC,填充方式采用PKCS7,对超大量数据进行分段加解密
3889浏览 • 1回复 待解决
密钥库生成sm2密钥,密钥对不能同时支持签名和加解密
1408浏览 • 1回复 待解决
SM4 CBC模式加解密,有好的方案吗?
2402浏览 • 1回复 待解决
HarmonyOS 怎么实现DES(非3DES)CBC模式加解密
1897浏览 • 1回复 待解决
HarmonyOS AES加解密咨询
1359浏览 • 1回复 待解决
HarmonyOS AES加解密问题
1200浏览 • 1回复 待解决
实现一次非对称RSA非对称加解密
2146浏览 • 1回复 待解决
AES加解密无法使用,有人知道原因吗?
1181浏览 • 1回复 待解决
HarmonyOS Next的加解密框架是如何保存密钥的?如何优雅使用加解密框架?
1392浏览 • 1回复 待解决
RSA导入外部密钥实现加解密
1778浏览 • 1回复 待解决
3DES如何根据指定KEY、IV生成SymKey对称秘钥?
1597浏览 • 1回复 待解决
HarmonyOS AES加解密报错17630001
1476浏览 • 1回复 待解决
HarmonyOS 生成非对称密钥报错 Error: convert key fail.
2271浏览 • 1回复 待解决
HarmonyOS AES加解密与java无法通用
1516浏览 • 1回复 待解决
HarmonyOS AES128/CBC/NoPadding加密模式报错
963浏览 • 1回复 待解决
HUKS的SM4加解密,判断密钥的存在以及删除密钥
2191浏览 • 1回复 待解决
如何进行不同规格的AES加解密
1918浏览 • 1回复 待解决
HarmonyOS aes gcm加解密c/c++库
1132浏览 • 1回复 待解决
HarmonyOS AES/ECB/PKCS7Padding 加解密
890浏览 • 1回复 待解决
使用AES对称密钥(CBC模式)加解密
可以参考以下链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-aes-sym-encrypt-decrypt-cbc-V5
参考demo: