rsa算法与在嵌入式设备中的移植


1.算法简介

rsa是一种非对称加密算法(公钥私钥是不同的)。

首先有几个约定俗称的名称:公钥指数e、私钥指数d和模值n.

算法描述:
(1)选择一对不同的、足够大的素数p,q。
(2)计算n=p*q
(3)计算f(n)=(p-1)*(q-1),同时对p,q严加保密,不让任何人知道。
(4)找一个与f(n)互质的数e,且1 (5)计算d,使得。这个公式也可以表达为
这里要解释一下,≡是数论中表示同余的符号。公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。显而易见,不管f(n)取什么值,符号右边1 mod f(n)的结果都等于1;符号的左边d与e的乘积做模运算后的结果也必须等于1。这就需要计算出d的值,让这个同余等式能够成立。
(6)公钥KU=(e,n),私钥KR=(d,n)。
(7)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:
(8)解密过程为:

2.算法案例

A将明文"key"传送给B,需要设计公钥(e,n)与私钥(d,n).

假设:

1.p=3,q=11,则n=p*q=33
2.f(n)=2*10=20
3.取e=3,则e与f(n)互质
4.可以设计出d=7
5.可以设计出公钥KU=(e,n)=(3,33)与私钥KR=(d,n)=(7,33)

3.实践

其实初始参考:stm32加密库 ,发现在我的单片机上编译不通过,也就使用不了rsa了。如果单靠移植的话,那需要找到更加稳定的代码,找openssl发现不好移植,也就不了了之了。

4.资源

尽管在单片机上没有把rsa做上去,但还是要列一下找到的资源。

1.rsa在线加解密工具

你可能感兴趣的:(rsa算法与在嵌入式设备中的移植)