RSA导入外部密钥实现加解密

为了保护数据的安全,  使用加解密方式让一些信息在传递的过程中保证它的安全性,确保用户重要密码数据数据安全

HarmonyOS
2024-05-28 21:15:01
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fiftystep

使用的核心API

  •  加解密算法库框架
  •  接口及参数说明

核心代码解释

ASY_KEY_NAME_RSA_3072 参数规格 
ALG_NAME_RSA_3072 创建cipher对象的算法参数和填充方式 
/* 
* 加密 
* */ 
public static async add(str: string, publicKey: string): Promise<string> { 
let result = ''; 
try { 
let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator(this.ASY_KEY_NAME_RSA_3072); 
 
const publicKeyDataBlob = { data: this.decodeToUint8Array(publicKey) }; 
 
let cipher = cryptoFramework.createCipher(this.ALG_NAME_RSA_3072); //创建一个 Cipher (解密)对象 
let put: cryptoFramework.DataBlob = { data: this.stringToUint8Array(str) }; 
let globalKeyPair: cryptoFramework.KeyPair = await asyKeyGenerator.convertKey(publicKeyDataBlob, null); 
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, globalKeyPair.pubKey, null); 
const finalRes = await cipher.doFinal(put) 
 result = this.encodeToString(finalRes.data); 
} catch (err) { 
console.log(err.message) 
} 
return result; 
 } 
/* 
* 解密 
* 
* */ 
public static async rsaDecrypt(message: string | Uint8Array, privateKey: string): Promise<string> { 
let result = ''; 
try { 
let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator(this.ASY_KEY_NAME_RSA_3072); 
const privateKeyDataBlob = { data: this.decodeToUint8Array(privateKey) }; 
const keyPair = await asyKeyGenerator.convertKey(null, privateKeyDataBlob); 
let cipher = cryptoFramework.createCipher(this.ALG_NAME_RSA_3072); //创建一个 Cipher (解密)对象 
await cipher.init(cryptoFramework.CryptoMode.DECRYPT_MODE, keyPair.priKey, null); 
let bytes: Uint8Array = null; 
if (typeof message === 'string') { 
bytes = this.decodeToUint8Array(message); 
} else { 
bytes = message; 
} 
const finalRes = await cipher.doFinal({ data: bytes }) 
result = this.uint8ArrayToString(finalRes.data); 
} catch (err) { 
console.error(err.code) 
} 
return result; 
 }

适配的版本信息

  • IDE:DevEco Studio 4.0.3.600
  • SDK:HarmoneyOS 4.0.10.10
分享
微博
QQ
微信
回复
2024-05-29 22:21:19
相关问题
实现一次非对称RSA非对称加解密
436浏览 • 1回复 待解决
多种加密方式实现加解密
416浏览 • 1回复 待解决
Huks如何导入AES的密钥
257浏览 • 1回复 待解决
加解密算法库框架使用
452浏览 • 1回复 待解决
基于加解密算法框架的规格问题
201浏览 • 1回复 待解决
SM4采用OFB模式进行加解密
310浏览 • 1回复 待解决
求大佬告知如何进行des加解密
423浏览 • 1回复 待解决
如何进行不同规格的AES加解密
210浏览 • 1回复 待解决
AES加解密长字符串是否需要分段
158浏览 • 1回复 待解决
如何使用SM4的CBC模式加解密
177浏览 • 1回复 待解决
使用32字节秘钥加解密后报错
467浏览 • 1回复 待解决
如何使用国密SM2算法进行加解密
865浏览 • 1回复 待解决
加解密HmacSha1 、HmacSha256、aes参考Demo
550浏览 • 1回复 待解决
SM4 CBC模式加解密,有好的方案吗?
449浏览 • 1回复 待解决