HarmonyOS RSA/ECB/PKCS1 秘钥长度为2048位加解密,验签

Java RSA加解密以及验签

HarmonyOS
2024-08-13 15:02:54
浏览
收藏 1
回答 1
回答 1
按赞同
/
按时间
zbw_apple

可以尝试下如下代码:

RSA加解密

const pubKey = 'MIGfxxx0GCSxxxxxxxxxxxxxxxxxxxxxxxxxx公钥参数'; 
const priKey = 'MIICxxxxBADANBxxxxxxxxxxxxxxxxx私钥参数' 
const base64 = new util.Base64Helper() 
const publicKeyDataBlob: cryptoFramework.DataBlob = { data: base64.decodeSync(pubKey) }; 
const priKeyDataBlob: cryptoFramework.DataBlob = { data: base64.decodeSync(priKey) } 
const asyKeyGenerator = cryptoFramework.createAsyKeyGenerator('RSA2048'); 
const keyGenPromise: cryptoFramework.KeyPair = await asyKeyGenerator.convertKey(publicKeyDataBlob, priKeyDataBlob); 
 
let cipher = cryptoFramework.createCipher('RSA|ECB|PKCS1'); //创建一个 Cipher (解密)对象 
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyGenPromise.pubKey, null); 
const plaintext = '我是明文' 
let put: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(plaintext).buffer) }; 
const finalRes = await cipher.doFinal(put) 
 
await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, keyGenPromise.priKey, null) 
const result = await cipher.doFinal(finalRes) 
console.log(TAG, 'success');
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

RSA验签

const pubKey = 'MIGfMA0GCS公钥'; 
const priKey = 'MIICdQIBADA私钥' 
 
// 完整的明文被拆分为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) }; 
 
const base64 = new util.Base64Helper() 
const publicKeyDataBlob: cryptoFramework.DataBlob = { data: base64.decodeSync(pubKey) }; 
const priKeyDataBlob: cryptoFramework.DataBlob = { data: base64.decodeSync(priKey) } 
const asyKeyGenerator = cryptoFramework.createAsyKeyGenerator('RSA2048'); 
const keyGen: cryptoFramework.KeyPair = await asyKeyGenerator.convertKey(publicKeyDataBlob, priKeyDataBlob); 
 
let signAlg = "RSA2048|PKCS1|SHA256"; 
let signer = cryptoFramework.createSign(signAlg); 
await signer.init(keyGen.priKey); 
await signer.update(input1); // 如果明文较短,可以直接调用sign接口一次性传入 
let signData = await signer.sign(input2); 
 
let verifyAlg = "RSA2048|PKCS1|SHA256"; 
let verifier = cryptoFramework.createVerify(verifyAlg); 
await verifier.init(keyGen.pubKey); 
await verifier.update(input1); // 如果明文较短,可以直接调用verify接口一次性传入 
let res = await verifier.verify(input2, signData);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

分段加解密可以参考一下指南:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-rsa-asym-encrypt-decrypt-by-segment-0000001821000085-V5

分享
微博
QQ
微信
回复
2024-08-13 21:45:01
相关问题
签名算法不支持RSA|PKCS8|SHA1
1135浏览 • 1回复 待解决
HarmonyOS AES/ECB/PKCS7Padding 加解密
628浏览 • 1回复 待解决
HarmonyOS 加解密方式 AES/ECB/PKCS5Padding
992浏览 • 1回复 待解决
HarmonyOS 关于RSA加解密问题
1002浏览 • 1回复 待解决
使用32字节加解密后报错
2616浏览 • 1回复 待解决
HarmonyOS RSA签名相关
782浏览 • 1回复 待解决
HarmonyOS RSA解密
965浏览 • 1回复 待解决
RSA签名后,后端失败
1002浏览 • 1回复 待解决
HarmonyOS 接口参数的RSA签名+
712浏览 • 1回复 待解决
HarmonyOS RSA如何用公解密
1619浏览 • 0回复 待解决
HarmonyOS RSA私钥加密公解密
1039浏览 • 1回复 待解决
HarmonyOS RSA加密的base64转换
1152浏览 • 1回复 待解决
HarmonyOS 加密导入RSA1024对Demo
797浏览 • 1回复 待解决
HarmonyOSRSA如何用公解密
768浏览 • 0回复 待解决
RSA导入外部密钥实现加解密
1559浏览 • 1回复 待解决
HarmonyOS 有没有相关rsa加解密内容
601浏览 • 1回复 待解决
HarmonyOS中有RSA加解密相关吗?
606浏览 • 0回复 待解决
HarmonyOSRSA加解密相关吗
1172浏览 • 0回复 待解决