【鸿蒙实战开发】HarmonyOS非对称加密-RSA

1. 介绍

本篇将介绍RSA非对称加密,官方也给出了一些样例使用代码,可供开发者参考。

本篇从实践出发,完整的通过代码方式来深入了解HarmonyOS中的非对称加密用法。

在这里插入图片描述

2. 基础概念

字符串样例:RSA1024|PKCS1|MD5|MGF1_MD5

1.密钥算法 : RSA
2.密文组长度 : 1024
3.填充模式 : PKCS1
4.摘要: MD5
5.摘要掩码: MGF1_MD5

关于“RSA算法”,“填充模式”, “摘要”, "摘要掩码"的具体概念,可自行搜索。

3. 实践

加密使用的测试数据源有三个,具体见下图

1.“92字节” (即,占用了92个字节的字符串)
2.“117字节” (即,占用了117个字节的字符串)
3.“128字节” (即,占用了128个字节的字符串)

3.1 MMI入口

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2 RSA加解密

●RSA加密算法密文分组长度有七种:512,718,1024,2048,3072,4096,8192;
●支持3种填充模式:NoPadding, PKCS1, PKCS1_OAEP;
●在PCKCS1_OAEP填充模式下,支持六种摘要:MD5, SHA1, SHA224, SHA256, SHA384, SHA512;
●在PCKCS1_OAEP填充模式下,支持六种摘要掩码:MGF1_MD5, MGF1_SHA1, MGF1_SHA224, MGF1_SHA256, MGF1_SHA384, MGF1_SHA512
本篇仅以1024密文组长度做为实践验证,默认选择“128字节”数据集

片段代码以 “RSA1024|PKCS1_OAEP|MD5|MGF1_MD5” 为例

在这里插入图片描述

3.2.1 加密

生成对动态密钥

//导入加密框架
import cryptoFramework from '@ohos.security.cryptoFramework';

......

//创建密钥生成器,参数为(密钥算法+密文组长度+素数,如:RSA1024|PRIMES_2)
let symKeyGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024|PRIMES_2');

//生成对称密钥
let promiseSymKey = symKeyGenerator.generateKeyPair();

//获取密钥
promiseSymKey( key => {
   
 //密钥对
 this.keyPair = rsaKeyPair;

})

初始化Cipher

//创建Cipher
globalCipher = cryptoFramework.createCipher('RSA1024|PKCS1_OAEP|MD5|MGF1_MD5');

//使用公钥初始化Cipher
let mode = cryptoFramework.CryptoMode.ENCRYPT_MODE; 
globalCipher.init(mode, this.keyPair.pubKey, null)

加密

//文字转换为Uint8Array
const encoder = new util.TextEncoder()
let u8a_encoder = encoder.encodeInto('测试')

//封装Uint8Array 数据,必须是一个带data属性的对象
let plainText = { data: u8a_encoder };

//开始加密
let promiseUpdate = globalCipher.doFinal(plainText);

//获取加密结果
promiseUpdate( result => {

   //密文
   let this.cipherText = result.data
   
})

至此,加密已经结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值