ohos.security.cryptoFramework框架下的RSA分段加密,doFinal函数401异常
使用ohos.security.cryptoFramework框架下的RSA分段加解密,doFinal函数401异常。冷启动App后第一次肯定401失败,之后偶现的报错,整体可以正常的得到加密结果,解密函数不会报错。代码如下
//将公钥转换
return new Promise((resolve, reject) => {
let plainTextSplitLen = 64;; // RSA每次加解密允许的原文长度大小与密钥位数和填充模式等有关,详细规格内容见overview文档
//生成密钥器
let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2");
//公钥格式转换
let pubKeyBlob: cryptoFramework.DataBlob
if (typeof pubKey === 'string') {
let pubStr = SMCipherModule.Base64Decode(pubKey)
let strArr = SMCipherModule.stringToByte(pubStr)
pubKeyBlob = { data: strArr}; // 公钥二进制数据
}else{
pubKeyBlob = { data: pubKey }; // 公钥二进制数据
}
// 将公钥转换
asyKeyGenerator.convertKey(pubKeyBlob, null).then( async (keyPair) => {
// 创建加密Cipher对象
let cipherEncryption = cryptoFramework.createCipher("RSA1024|PKCS1");
// 初始化加密器
cipherEncryption.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null);
// 加密后的结果
let cipherText = new Uint8Array();
// 原始待加密明文转换成Api可处理的参数类型DataBlob
let plainTextData: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer) };
// 将原文按64字符进行拆分,循环调用doFinal进行加密,使用1024bit密钥时,每次加密生成128B长度的密文
for (let i = 0; i < plainTextData.data.length; i += plainTextSplitLen) {
let updateMessage = plainTextData.data.subarray(i, i + plainTextSplitLen );
let updateMessageBlob: cryptoFramework.DataBlob = { data: updateMessage };
// 将原文按64字符进行拆分,循环调用doFinal进行加密,使用1024bit密钥时,每次加密生成128字节长度的密文
let updateOutput = await cipherEncryption.doFinal(updateMessageBlob);
let mergeText = new Uint8Array(cipherText.length + updateOutput.data.length);
mergeText.set(cipherText);
mergeText.set(updateOutput.data, cipherText.length);
cipherText = mergeText;
}
let cipherBlob: cryptoFramework.DataBlob = { data: cipherText };
resolve (cipherBlob.data)
}).catch((error: Error) => {
console.error("Error: ", error.message);
reject(error);
});
});
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS @ohos.security.cryptoFramework使用cipher解密失败
173浏览 • 1回复 待解决
如何使用@ohos.security.cryptoFramework库对字符串进行MD5加密?
270浏览 • 1回复 待解决
rsa加密公钥convertKey异常:401 invalid param
2365浏览 • 1回复 待解决
HarmonyOS RSA分段加密乱码
886浏览 • 1回复 待解决
HarmonyOS rsa加密返回401错误
250浏览 • 1回复 待解决
cryptoFramework是否支持RSA的私钥加密,公钥解密
947浏览 • 1回复 待解决
ArkTS版本如何实现RSA分段加密与解密?
2848浏览 • 0回复 待解决
RSA非对称加密-@hms-security/agoh-crypto
704浏览 • 1回复 待解决
HarmonyOS RSA分段加密数据数据 第一次执行加密操作出现报错401,之后执行加密方法却又都正常了
98浏览 • 1回复 待解决
HarmonyOS 使用 cryptoFramework.createCipher 创建RSA非对称加密问题
269浏览 • 1回复 待解决
CryptoFramework是否支持“RSA ECB pkcs1padding”加密模式
2279浏览 • 3回复 待解决
HarmonyOS 在使用rsa加密的时候发现加密串太长会异常
302浏览 • 1回复 待解决
jsUI框架下的canvas组件是否有案例参考?
4728浏览 • 1回复 待解决
HarmonyOS navigation UI框架下,onPageShow不回调
1304浏览 • 1回复 待解决
HarmonyOS ohosTest测试框架下的resource资源如何获取
252浏览 • 1回复 待解决
HarmonyOS RSA加密方式
940浏览 • 1回复 待解决
HarmonyOS AES加密/RSA加密问题
61浏览 • 1回复 待解决
RSA NoPadding模式加密失败
1537浏览 • 1回复 待解决
HarmonyOS 实现RSA加密功能
685浏览 • 1回复 待解决
HarmonyOS rsa加密报错
331浏览 • 1回复 待解决
HarmonyOS cryptoFramework的签名是对数据加密还是对数据摘要加密
61浏览 • 1回复 待解决
import asset from '@ohos.security.asset'报错
2419浏览 • 1回复 待解决
HarmonyOS RSA加密算法实现
266浏览 • 1回复 待解决
import asset from "@ohos.security.asset" 导入报错
1952浏览 • 1回复 待解决
HarmonyOS RSA加密失败问题
193浏览 • 1回复 待解决
请参考rsa分段加解密写法:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-rsa-asym-encrypt-decrypt-by-segment-0000001821000085-V5