rsa 公钥解密初始化报错
使用rsa的公钥解密初始化报错401,具体代码如下:
const RSA512_PKCS1: string = 'RSA512|PKCS1';
const RSA_BODY_KEY:string='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCykN5sbKMPPc3S3YpuU9qbO9FFnk/lBliWEfBoccvk7oAt1KEKrqCyGRhuXi9UeUZmMVDbormv7InPy+oVgteJyQ6smHdmmDJuDl9VB0GbVouqTTYJVE/myK/dmDzySf6FUfzNROWeEIBWCGdnI7xI6ja1Ed9+scfFF+O7RQqn0QIDAQAB'
let datainfo='RIeGeqVUFztbyS848YwmhJIhW4V2fKeX8QyiqQQiwprb6jSWLa7wACUqJQCB+qH00QQFLISiailyLI3yK5K/cIt6IBTumvUb9GdP8K8uqqPCSCU4tgPUOEWznC4F5KU8Ft5sHALuiXWvEUpMRwREIPS8dVPEy6YEzdHdqC65LSM='
let cipherModel: CipherModel = new CipherModel();
let infoStr=await cipherModel.rsaDecryptByPublic(datainfo,RSA_BODY_KEY)
rsaDecryptByPublic(message: string,publicKey:string):Promise<string> {
let rsaGenerator = cryptoFramework.createAsyKeyGenerator(RSA512_PRIMES_2);
let cipher = cryptoFramework.createCipher(RSA512_PKCS1);
let that = new util.Base64Helper();
let pubKey = that.decodeSync(publicKey);
let pubKeyBlob: cryptoFramework.DataBlob = { data: pubKey };
let promiseResult=new Promise<string>((resolve: Function, reject: Function)=>{
rsaGenerator.convertKey(pubKeyBlob, null, (err, keyPair) => {
if (err) {
Logger.error("convertKey: error." + (err as BusinessError).code);
reject(err);
return
}
cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, keyPair.pubKey, null, async (err, data) => {
try {
let newMessage = that.decodeSync(message);
let cipherText: cryptoFramework.DataBlob = { data: newMessage };
let cipherTextSplitLen = 128; // RSA密钥每次加密生成的密文字节长度计算方式:密钥位数/8
let decryptText = new Uint8Array();
for (let i = 0; i < cipherText.data.length; i += cipherTextSplitLen) {
let updateMessage = cipherText.data.subarray(i, i + cipherTextSplitLen);
let updateMessageBlob: cryptoFramework.DataBlob = { data: updateMessage };
// 将密文按128字节进行拆分解密,得到原文后进行拼接
let updateOutput = await cipher.doFinal(updateMessageBlob);
let mergeText = new Uint8Array(decryptText.length + updateOutput.data.length);
mergeText.set(decryptText);
mergeText.set(updateOutput.data, decryptText.length);
decryptText = mergeText;
}
let result = this.uint8ArrayToString(decryptText);
resolve(result)
} catch (err) {
Logger.info(TAG, "cipher init error: " + (err as BusinessError).code);
return err;
}
})
})
});
return promiseResult
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS RSA 公钥加密成功,但使用私钥加密,初始化方法报错
1137浏览 • 1回复 待解决
HarmonyOS RSA公钥解密
1273浏览 • 1回复 待解决
HarmonyOS 支持rsa使用公钥解密吗
1420浏览 • 1回复 待解决
HarmonyOS 关于RSA公钥加解密问题
1212浏览 • 1回复 待解决
HarmonyOS RSA如何用公钥解密
2052浏览 • 1回复 待解决
HarmonyOS RSA私钥加密公钥解密
1257浏览 • 1回复 待解决
HarmonyOS中RSA如何用公钥解密?
922浏览 • 0回复 待解决
cryptoFramework是否支持RSA的私钥加密,公钥解密
1604浏览 • 1回复 待解决
HarmonyOS RSA指定公钥或私钥字符串加密和解密
1239浏览 • 1回复 待解决
HarmonyOS X509公钥无法直接初始化成PubKey对象
768浏览 • 1回复 待解决
如何使用RSA公钥加密明文数据
1562浏览 • 1回复 待解决
HarmonyOS 私钥加密公钥解密问题
1057浏览 • 1回复 待解决
HarmonyOS XComponent初始化
1417浏览 • 1回复 待解决
rsa加密公钥convertKey异常:401 invalid param
3307浏览 • 1回复 待解决
HarmonyOS 使用taskpool出现初始化异常的报错
964浏览 • 1回复 待解决
HarmonyOS taskpool中new 对象报错未初始化
1379浏览 • 1回复 待解决
JSON初始化后有数据,如何跳过二次初始化?
601浏览 • 1回复 已解决
HarmonyOS 组件初始化参数
975浏览 • 1回复 待解决
HarmonyOS struct初始化方法
1262浏览 • 1回复 待解决
HarmonyOS ArkTS不支持RSA公钥解密吗,有其他ohpm库可以用吗?
961浏览 • 1回复 待解决
HarmonyOS egl初始化环境按照文档来,函数报错
1122浏览 • 1回复 待解决
HarmonyOS Component初始化问题
1779浏览 • 1回复 待解决
怎么进行全局初始化操作?
560浏览 • 0回复 待解决
没法调试“已初始化”分支
1242浏览 • 1回复 待解决
HarmonyOS 初始化EGL环境失败
1167浏览 • 1回复 待解决
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-rsa-asym-encrypt-decrypt-pkcs1-0000001774120466-V5
相关文档参考RSA的签名和签名恢复:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-sign-sig-verify-overview-0000001821000089-V5#ZH-CN_TOPIC_0000001881178025__%E7%AD%BE%E5%90%8D%E6%A8%A1%E5%BC%8F%E4%B8%BAonlysign
以下是公钥解密的demo: