RSA加密算法
admin 2018-12-28 18:17:30 563人已围观
在开发过程中经常会使用到各种加密和解密算法,计划花点时间系统性加深学习一下,记录一下自己在学习过程中简单看法。今天学习的是RSA加密算法,RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA算法是一种非对称密码算法,所谓非对称,就是指加密和解密使用不同的密钥,使用其中一个加密,则需要用另一个才能解密。这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法,为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。现在很多支付企业或者银行的系统里面还在使用这种算法来做数据签名和验签。先看一张图:
解释图
用一句话来解释RSA算法就是:RSA每次会生成一对密钥,一个公钥(公开的),一个私钥用户自己保密留着,先用公钥加密信息传递给接收用户,接收用户再使用私钥解密,如果是数字签名的话就是:先用私钥生成签名信息,再用公钥验证签名信息,能验证通过则表示数据信息安全无篡改。
最后想说明的就是加密和签名的区别,经常用人搞混了这2个概念:加密就是将信息用一个算法计算后得到密文防止信息泄露,例如用户的密码,方便好记你可以理解为:将一个密码箱随便送到哪里这个世界上只有我有钥匙打开。而签名是在网络上传输一些重要数据的时候要防止在传输的过程中有人篡改数据,当送到接收方的时候实际已经不是我们的原始数据,那么就先将我们要传输的数据按照一种加密算法生成一个字符串,将这个字符串一并当成信息传输给接收方;当接收方收到我们的数据后按照约定好的算法自己再生成一个字符串,与传输过来的字符串对比,如果一致则表示数据没有被篡改,验证签名通过,如果不一致就表示数据已经被篡改,验证签名就不通过。签名和验证签名你可以记成:我的字虽然写得丑但很有个性以至于我的所有亲朋好友都认识,所以我签名的文件送到我的任何一个朋友哪里他们一眼就可以认出来。
先记录到这里,下次再写代码实现加密和解密,签名和验签的实现过程。