Java教程

RSA加密算法

本文主要是介绍RSA加密算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、加密算法

加密算法一般分为分为①对称加密 和 ②非对称加密 两种。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位的二进制数为密匙,一般计算机算出需要十年,量子计算机也需要一周。出于这种困难的计算人们认为它是相对安全的。

  

 

    

这篇关于RSA加密算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!