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
待解决
相关问题
如何使用@ohos.security.cryptoFramework库对字符串进行MD5加密?
118浏览 • 1回复 待解决
rsa加密公钥convertKey异常:401 invalid param
2103浏览 • 1回复 待解决
HarmonyOS RSA分段加密乱码
507浏览 • 1回复 待解决
ArkTS版本如何实现RSA分段加密与解密?
2422浏览 • 0回复 待解决
cryptoFramework是否支持RSA的私钥加密,公钥解密
783浏览 • 1回复 待解决
RSA非对称加密-@hms-security/agoh-crypto
472浏览 • 1回复 待解决
CryptoFramework是否支持“RSA ECB pkcs1padding”加密模式
2115浏览 • 3回复 待解决
jsUI框架下的canvas组件是否有案例参考?
4541浏览 • 1回复 待解决
HarmonyOS navigation UI框架下,onPageShow不回调
840浏览 • 1回复 待解决
HarmonyOS RSA加密方式
528浏览 • 1回复 待解决
RSA 加密的具体使用方法
140浏览 • 1回复 待解决
import asset from '@ohos.security.asset'报错
2083浏览 • 1回复 待解决
RSA NoPadding模式加密失败
1168浏览 • 1回复 待解决
HarmonyOS 实现RSA加密功能
500浏览 • 1回复 待解决
import asset from "@ohos.security.asset" 导入报错
1636浏览 • 1回复 待解决
鸿蒙ArkTS如何实现分段加密与解密工具类
1968浏览 • 0回复 待解决
HarmonyOS 请问ArkTS如何实现RSA加密?
410浏览 • 1回复 待解决
RSA加密,使用自有私钥解密报错
163浏览 • 1回复 待解决
如何使用RSA公钥加密明文数据
391浏览 • 1回复 待解决
加密库如:AES、DES、RSA、DSA、Sha256加密是否支持?
109浏览 • 1回复 待解决
HarmonyOS 是否有系统级同步的AES和RSA加密方法
352浏览 • 1回复 待解决
RSA 加密实践问题。将java中RSA加密代码翻译成 arkts 代码时,无法确定正确的API。希望提供正确的arkts代码
723浏览 • 1回复 待解决
如何实现RSA的公钥PK加密一段文字
564浏览 • 1回复 待解决
生成随机数并用RSA加密后进行编码的转换
780浏览 • 1回复 待解决
HarmonyOS上如何实现RSA加密,需要能支持PKCS1V15签名?
128浏览 • 1回复 待解决
请参考rsa分段加解密写法:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-rsa-asym-encrypt-decrypt-by-segment-0000001821000085-V5