欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RSA讲解

程序员文章站 2022-07-04 14:12:21
...

        相对于DES而言,RSA是一个极为简单的加密算法,它的密码强度取决于数学难题的不可解。此外,它还是非对称密码*中的一个重要算法。

        何为非对称密码*?首先要从对称密码*说起,DES就是一个典型的对称密码算法,即加密密钥和解密密钥是相同的。那非对称密码*,顾名思义,就是加密密钥和解密密钥不同,它存在一个公私密钥对,用公钥加密、私钥解密即为加密算法。那么问题来了,如果用私钥加密、公钥解密,又作何解呢?其实这就是所谓的数字签名,这里先不做详解。

        回归正题,RSA加密的流程可以做如下理解:

        首先是密钥的生成。选择两个互异的大素数p和q,计算n=p*q,f(n)=(p-1)*(q-1),选择一个随机整数e(0<e<f(n)),且满足gcd(e,f(n))=1。计算d=e^-1modf(n)。

        [注]:以上需要保密的有:p、q、f(n)、d;

                 公开的有:n、e;

        那么,公钥为{e,n},私钥为{d,n}。

        这样,基本配置就完成了,那加密即C=M^e mod n,解密为M=C^d mod n。

        以上,看似已经可以实现RSA的加解密了,但其实这里还存在三个问题。

        一、明文转化为二进制

               将明文分组后对应成二进制,然后对每组分别进行加密。这里存在一个与DES相同的问题,分组不

               足时的补位,我们依然按照补0来实现。

        二、大素数的选取

               大素数是指1024位或2048位的素数,这将会是一个很复杂的过程,所以在编程实现时,我们只能

               尽可能的选取较大的素数。可以用Miller-Rabin算法来检测素数。

        三、快速取模问题

               即如何快速计算a^m mod n,这个方法并不复杂,这里就不做详解了。

        至此,一个完整的RSA算法就结束了,下面附一张RSA的流程图来更清楚的表述。

  • RSA讲解
            
    
    博客分类: Cryptography RSA加密 
  • 大小: 16.9 KB
相关标签: RSA 加密