一、加密算法
加密算法一般分为分为①对称加密 和 ②非对称加密 两种。RSA算法属于第二种。
Ⅰ 对称加密:
例如:路飞想把 M 告诉索隆。路飞经过某种算法把 M 算成了 N(例如该算法为M的后一位字母)。索隆收到 N 后,用同种算法逆运算得到 M。
明文:未加密的数据(M)
密文:加密后的数据(N)
密钥:加密算法中的数据
索隆同时得到①密钥 和 ②密文 才能得出数据 M。普通人窃听了 密钥和密文同样可以得到数据 M 。
Ⅱ 非对称加密:
例如:路飞想把 M(明文) 告诉索隆。索隆首先准备两个有联系的数据 X 和 Y ,然后把 X 告诉路飞,路飞使用 X 给 M(明文) 加密后得到 N(密文) 路飞把N(密文)再传给索隆。索隆得到 N(密文) 后使用 Y 解密 N(密文) 得到 M(明文) 。
公钥:双方都知道的数据(X)
私钥:只有索隆知道的数据(Y)
此刻外界知道①公钥 和 ② 密文 也没用,因为索隆解密用的是 私匙(Y)。
二、RSA加密算法(非对称加密的经典算法)
①索隆找出的 P 和 Q 都是质子数( 约数只有1和它本身 )。
②接着计算出 N = P * Q
③ 欧拉函数 →→→ α(N) = (P-1)*(Q-1)
④ 接着索隆需要找一个公钥 X ,该公钥需要满足以下条件
第一条: 1 < X(整数) < α(N)
第二条:X 和 α(N) 互质 (即没有公共因子)
⑤ 索隆还要找一个合适的私钥 Y,该私钥要满足以下条件
第一条: X*Y / α(N) 的余数为1
总结以上: 公钥:X 私钥:Y 密钥:N 明文:M 密文:C
接着就可以加密解密了:
加密过程: M的X次幂(X个M相乘)除以N取余 余数为密文 C
解密过程: C的Y次幂(Y个C相乘)除以N取余 余数一定为明文 M
传信息三步走:
索隆需要传播 : 公钥 X
路飞对明文 M 加密,得到密文 C,把密文 C 发给索隆
索隆使用私匙 Y 解密得到明文
三 、RSA算法的安全性
在传递信息的过程中,外界可能得到公钥 X,密文 C ,以及密钥 N
解密需要:密钥:N ,密文 C,私钥 Y
外界若要破解则要根据公钥 X 算出私钥 Y ,X 和 Y 的关系和 α(N) 有关,求 α(N)就要知道 P 和 Q,已知 N=P*Q 于是我们就要先把 N(密钥) 质因数分解。
一个大数的质因数分解是十分困难的,RSA用的是1024位的二进制数为密匙,一般计算机算出需要十年,量子计算机也需要一周。出于这种困难的计算人们认为它是相对安全的。