1、加密算法概述

加密算法根据内容是否可以还原分为 可逆加密和非可逆加密 。

可逆加密根据其加密解密是否使用的同一个密钥而可以分为 对称加密和非对称加密 。

所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。

非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。

RSA加密算法是一种非常具有代表性的非对称加密算法。

2、RSA公钥与密钥的产生

随意选择两个大的​​质数​​p和q,p不等于q,

计算公钥和私钥的公共模数 n = pq 。

计算模数n的欧拉函数 φ(n) .

根据​​欧拉函数​​,求得r = (p-1)(q-1)

选择一个小于 r 的整数 e,使1 < e < φ(n) , 且e与φ(n)互质.

求得 e 关于模 r 的​​模反元素​​,满足 de ≡ 1  (mod φ(n) ), (k为某个正整数).命名为d。(模反元素存在,当且仅当e与r互质)

将 p 和 q 的记录销毁。

n与e决定公钥, n与d决定私钥.



3、RSA C/C++ 程序示例