目录
信息加密
公钥加密
RSA算法
使用大素数乘积的因子分解问题,使用大素数计算乘积很简单,但是对乘积进行分解却很难,所以可以将乘积作为加密密钥公开
如下图所示,我们首先选择两个质数p=59,q=127,然后计算得到N=q*p为7493,任意选定一个公钥为e=5,私钥为d=4385(是通过d*e=1(mod(p-1)(q-1))计算得到的),我们通过计算器使用d*e=1(mod(p-1)(q-1))验证一下,证明是对的。然后输入要加密的数,得到密文。
使用RSA-Tool加密消息
我们可以按照上面的步骤,生成p、q、n,指定公钥e,生成私钥d,如图所示
然后可以将公钥(e,n)发给小伙伴
小伙伴将消息用公钥进行加密后再传回来,我们就可以直接解密得到小伙伴传的消息
使用RSA算法进行对称密钥的分配
小A同学先用DES-Tool对消息进行加密,得到密文1,并记录下自己使用的密钥,小B同学使用RSA-Tool,生成公钥和私钥,将公钥发给小A同学,私钥自己留存,小A同学利用小B同学发来的公钥,对自己使用的密钥进行加密后得到密文2,将密文2发给小B同学,小B同学再使用RSA-Tool,解出小A同学发来的密文2,得到密钥,然后再用密钥使用DES-Tool解出密文1,得到小A发给小B的消息。流程图如下:
反向使用RSA算法生成数字签名
我们仍然用小A与小B做一个例子。首先小A同学使用Hash-Tool,生成所要传输文件的MD5值,然后再用RSA Tool 对MD5值进行加密,这时,使用RSA Tool生成公钥和密钥后,将公钥和密钥互换位置,然后再对MD5值进行加密。完成这些之后,小A同学将公钥,文件,以及加密后的MD5值一起发送给小B同学。小B同学使用RSA Tool,解出加密后的MD5值,得到一个MD5的值,再用Hash Tool生成接受到的文件的MD5值,比较两次生成的MD5的值是否一样,以此来验证数字签名的正确性。
体会
在以上几个例子中,RSA算法都与其他加密算法进行了结合,使得加密的过程以及破解的过程都变得复杂起来。科技一直在不断的发展,每一次密码的破解都意味着信息加密的一次进步。密码专家们致力于破解密码是为了能够找出算法漏洞,从而发现更加安全的加密方式。我国的科学家们在王小云教授破解了MD5之后,逐渐地降低了MD5的碰撞复杂度,设计了我国的哈希函数标准SM3。我们处在一个信息透明的时代,现在以及未来更加安全的密码是非常有必要的。