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如何用公钥解密
593浏览 • 0回复 待解决
HarmonyOS 支持rsa使用公钥解密吗
457浏览 • 1回复 待解决
cryptoFramework是否支持RSA的私钥加密,公钥解密
797浏览 • 1回复 待解决
如何使用RSA公钥加密明文数据
433浏览 • 1回复 待解决
rsa加密公钥convertKey异常:401 invalid param
2152浏览 • 1回复 待解决
HarmonyOS taskpool中new 对象报错未初始化
455浏览 • 1回复 待解决
HarmonyOS egl初始化环境按照文档来,函数报错
126浏览 • 1回复 待解决
如何实现RSA的公钥PK加密一段文字
592浏览 • 1回复 待解决
HarmonyOS Component初始化问题
395浏览 • 1回复 待解决
没法调试“已初始化”分支
185浏览 • 1回复 待解决
HarmonyOS 应用RDB初始化示例
393浏览 • 1回复 待解决
初始化安全相机的方法
384浏览 • 1回复 待解决
鸿蒙启动时,为什么初始化服务只初始化hiview,bootstrap和broadcast无法启动?
2868浏览 • 0回复 待解决
关于初始化EGL环境相关问题
628浏览 • 1回复 待解决
RSA加密,使用自有私钥解密报错
207浏览 • 1回复 待解决
HarmonyOS RSA中,如何通过私钥指数和公钥模数加载公私钥数据
406浏览 • 1回复 待解决
HarmonyOS 使用MMKV在主线程中初始化后,在worker线程中无法使用,需要重新初始化
139浏览 • 1回复 待解决
是否提供提前初始化webview的能力
2285浏览 • 1回复 待解决
harmonyos next如何初始化文字识别服务?
147浏览 • 0回复 待解决
如何初始化OceanBase服务器环境?
3665浏览 • 1回复 待解决
HarmonyOS的RSA中,如何通过私钥指数和公钥模数加载公私钥数据?
105浏览 • 0回复 待解决
HarmonyOS Class里面怎么实现@Link的初始化
372浏览 • 0回复 待解决
HarmonyOS泛型类的属性如何初始化?
436浏览 • 1回复 待解决
如何使用服务端下发的RSA公钥(字符串)对明文数据进行加密
1968浏览 • 1回复 待解决
HarmonyOS 如何在web组件初始化后设置header
420浏览 • 0回复 待解决
参考文档: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: