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

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

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

使用的核心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
相关问题
HarmonyOS 有RSA加解密相关吗
320浏览 • 0回复 待解决
实现一次非对称RSA非对称加解密
942浏览 • 1回复 待解决
多种加密方式实现加解密
908浏览 • 1回复 待解决
huks密钥导入自定义密钥
82浏览 • 1回复 待解决
Huks如何导入AES的密钥
654浏览 • 1回复 待解决
HarmonyOS RSA解密问题
336浏览 • 1回复 待解决
HarmonyOS 加解密 demo
370浏览 • 1回复 待解决
加解密算法库框架使用
775浏览 • 1回复 待解决
HarmonyOS RSA如何用公钥解密
448浏览 • 0回复 待解决
加解密问题的定位指导
250浏览 • 1回复 待解决
HarmonyOS rsa解密速度过于缓慢
393浏览 • 1回复 待解决