加解密相关知识(RSA,AES)

AES

AES = Advanced Encryption Standard,正式诞生于2002年,是目前最流行的对称加密算法之一

AES128,AES256就是采用128/256位秘钥进行AES加密

对称加密的意思就是自始至终只有一个密钥,由这个密钥加密的数据只能由这个密钥才能快速解密,否则强行破解非常耗时。

RSA

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,RSA就由是他们三个人名字的首字母组成的。RSA是一种非对称加密,简单来说,就是RSA加密时每次使用一对秘钥(假设为A和B),公布在外的为公钥,只由自己持有的为私钥,公钥和私钥在加密算法中没有高低之分,把A公布出去,那么A就是公钥,如果把B公布出去,那么B就是公钥(但是在实际使用中好像是有区别的,每次生成的私钥长度总比公钥长度长很多)。公钥加密的数据只有私钥才能快速解密,私钥加密的数据只有公钥才能快速解密(正是由于公钥加密的数据不能用公钥解密,才会把公钥公开,否则“加密”就成了笑话),即由一对秘钥中的一条秘钥加密的数据,只能由另一条秘钥解密。

相比于AES,RSA在相同秘钥长度的情况下加密强度要低很多。为了保证加密强度,一般使用的RSA秘钥的长度要比AES长得多(1024~3000多位),而且随着加密强度的提高,RSA秘钥长度增长很快。

保密级别对称密钥长度(bit)RSA密钥长度(bit)ECC密钥长度(bit)保密年限
808010241602010
11211220482242030
12812830722562040
19219276803842080
256256153605122120

RSA加密依赖于一个数学问题:对一个由两个质数相乘组成的极大数进行因数分解很困难。具体算法我没有看懂,但是可以很简单的得到一个结论,如果以后发明了对大数进行快速因式分解的算法,RSA加密的强度就会急速降低,变得不再安全。

RSA的使用一般有两种情景:

1.数据加密。接收者生成一对RSA秘钥,将公钥发布出去,信息发布者使用公钥将数据加密,然后发送给接收者,数据发送期间不必担心数据泄露,因为监听者不知道私钥,不能解密数据。

2.数据签名。数据发布者生成一对RSA密钥,将公钥发布出去,然后使用私钥将数据加密,再把数据公布出去。数据发布者使用公钥将数据解密,就可以得到原文,而且不用担心数据被人篡改,因为只要接收者使用正确的公钥解密数据,被篡改过的数据是无法解密成功的,只有经过私钥加密的“原版”数据才能用公钥解密,而私钥只掌握在数据真正的发布者手里。

RSA和AES加密一般配合使用。我现在工作的手机银行客户端的使用场景如下:

  1. 客户端先使用AES加密数据原文,再用服务器端公布的RSA公钥加密AES密钥,将这两段数据一起发送给服务器端
  2. .服务器端拿到数据后,先用自己的RSA私钥解密被RSA加密的AES密钥,得到真正的AES密钥,再用真正的AES密钥解密被AES密钥加密的数据密文,得到原文。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值