HarmonyOS 鸿蒙Next Crypto Architecture Kit 使用RSA非对称密钥(PKCS1模式)解密,请支持公钥解密
HarmonyOS 鸿蒙Next Crypto Architecture Kit 使用RSA非对称密钥(PKCS1模式)解密,请支持公钥解密
现有服务的解密使用rsa公钥解密,Crypto Architecture Kit暂时不支持公钥解密,后续开发无法进行
登录后需要使用rsa公钥解密把用户信息解密出来,才能进行下一步业务开发
试一下这个demo,应该可以解决你的问题
import cryptoFramework from '@ohos.security.cryptoFramework';
import buffer from '@ohos.buffer';
// 完整的明文被拆分为input1和input2
let input1: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from("This is Sign test plan1", 'utf-8').buffer) };
let input2: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from("This is Sign test plan2", 'utf-8').buffer) };
async function signMessagePromise(priKey: cryptoFramework.PriKey) {
let signAlg = "RSA1024|PKCS1|SHA256";
let signer = cryptoFramework.createSign(signAlg);
await signer.init(priKey);
await signer.update(input1); // 如果明文较短,可以直接调用sign接口一次性传入
let signData = await signer.sign(input2);
return signData;
}
async function verifyMessagePromise(signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) {
let verifyAlg = "RSA1024|PKCS1|SHA256";
let verifier = cryptoFramework.createVerify(verifyAlg);
await verifier.init(pubKey);
await verifier.update(input1); // 如果明文较短,可以直接调用verify接口一次性传入
let res = await verifier.verify(input2, signMessageBlob);
console.info("verify result is " + res);
return res;
}
async function main() {
let keyGenAlg = "RSA1024";
let generator = cryptoFramework.createAsyKeyGenerator(keyGenAlg);
let keyPair = await generator.generateKeyPair();
let signData = await signMessagePromise(keyPair.priKey);
let verifyResult = await verifyMessagePromise(signData, keyPair.pubKey);
if (verifyResult == true) {
console.info('verify success');
} else {
console.error('verify failed');
}
}
更多关于HarmonyOS 鸿蒙Next Crypto Architecture Kit 使用RSA非对称密钥(PKCS1模式)解密,请支持公钥解密的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
私钥加密,公钥解密,这是签名操作,当然不能用加解密的库。
下面是签名的文档
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-sign-sig-verify-overview-V5
在HarmonyOS鸿蒙Next Crypto Architecture Kit中,使用RSA非对称密钥进行解密操作时,需要注意的是,传统上RSA加密标准(PKCS#1)通常定义私钥用于解密,公钥用于加密。因此,如果你遇到的需求是支持公钥解密,这实际上并不符合标准的RSA加密流程,且大多数加密库(包括鸿蒙的Crypto Kit)默认不会支持这种非标准操作。
然而,如果你确实有这样的特殊需求(尽管强烈建议重新考虑安全性),并确信你的加密流程是安全的(比如使用了某种特定的、经过验证的加密协议),你可能需要:
-
检查Crypto Kit文档:查看鸿蒙Crypto Kit是否提供了低级别的API,允许你绕过标准流程进行非标准操作。
-
自定义实现:如果Crypto Kit不支持,你可能需要自己实现RSA的解密算法,确保它符合你的特殊需求。这通常涉及到对RSA数学运算的深入理解,并且极易出错。
-
考虑安全性:强烈建议在实施任何非标准加密流程前,进行彻底的安全性评估。公钥解密可能会引入严重的安全漏洞。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html