使用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 使用3DES对称密钥如何进行 CBC模式加解密
8浏览 • 1回复 待解决
使用AES CBC模式加解密,convertKey报错401
291浏览 • 1回复 待解决
HarmonyOS 对称加密不支持AES|CBC|NoPadding模式
19浏览 • 1回复 待解决
如何使用SM4的CBC模式加解密
998浏览 • 1回复 待解决
AES分段加解密,分组模式采用CBC,填充方式采用PKCS7,对超大量数据进行分段加解密
1981浏览 • 1回复 待解决
密钥库生成sm2密钥,密钥对不能同时支持签名和加解密
280浏览 • 1回复 待解决
HarmonyOS 怎么实现DES(非3DES)CBC模式加解密
871浏览 • 0回复 待解决
SM4 CBC模式加解密,有好的方案吗?
1059浏览 • 1回复 待解决
HarmonyOS AES加解密咨询
85浏览 • 1回复 待解决
HarmonyOS AES加解密问题
11浏览 • 1回复 待解决
实现一次非对称RSA非对称加解密
1101浏览 • 1回复 待解决
AES加解密无法使用,有人知道原因吗?
228浏览 • 1回复 待解决
3DES如何根据指定KEY、IV生成SymKey对称秘钥?
659浏览 • 1回复 待解决
RSA导入外部密钥实现加解密
813浏览 • 1回复 待解决
HarmonyOS Next的加解密框架是如何保存密钥的?如何优雅使用加解密框架?
12浏览 • 1回复 待解决
HarmonyOS AES加解密与java无法通用
518浏览 • 1回复 待解决
HarmonyOS 生成非对称密钥报错 Error: convert key fail.
806浏览 • 1回复 待解决
HarmonyOS AES128/CBC/NoPadding加密模式报错
29浏览 • 1回复 待解决
HarmonyOS AES/ECB/PKCS7Padding 加解密
17浏览 • 1回复 待解决
如何进行不同规格的AES加解密
855浏览 • 1回复 待解决
HarmonyOS aes gcm加解密c/c++库
61浏览 • 1回复 待解决
HUKS的SM4加解密,判断密钥的存在以及删除密钥
979浏览 • 1回复 待解决
在加解密算法框架中使用HMAC 算法,采用SHA256,怎么传入自己生成的密钥去实现加密?
917浏览 • 1回复 待解决
AES加解密长字符串是否需要分段
619浏览 • 1回复 待解决
HarmonyOS 加解密方式 AES/ECB/PKCS5Padding
10浏览 • 1回复 待解决
使用AES对称密钥(CBC模式)加解密
可以参考以下链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-aes-sym-encrypt-decrypt-cbc-V5
参考demo: