AES加密和RSA加密详细原理及使用场景

部分RPC请求或者网络传输,需要对一些敏感数据进行加密传输。

误解 当初错以为MD5、SHA1这些哈希算法就是加密算法

后来在一些远程通信和网络传输的过程中,需要对一些敏感数据,经过再编码的方式,转换成另一种字符编码格式或者二进制编码格式,然后进行传输,正真意义上才用到了加密算法。加密的基本思想是将数据转换成一种掩盖了原始含义的字符或者字节形式,只有经过适当授权的人才能解密,得到真正的内容。

加密算法分类:

AES:对称加密

RAS:非对称加密

AES 加密

AES 算法依次对每个 128 位(比特)数据块应用一系列数学变换。

一般有 128 位(比特),192位和256位几种,一般记为AES-128、AES-192和AES-256。简短数据采用AES-128,也就是秘钥是16字节,少部分采用AES-256。

由于这种方法的计算要求较低,AES 可用于笔记本电脑和智能手机等消费类设备上进行数据加密,以及快速加密大量数据。

AES加密填充方式

待加密的明文以16字节分组进行加密,如果数据字节长度不是16的倍数,最后的一组则需要在有效数据后面进行填充,使得数据长度变为16字节,AES填充方式分为NoPadding、PKCS5(PKCS7)、ISO10126、Zeros。

NoPadding:不填充,那就只能加密长度为16倍数的数据,一般不使用

Zeros:补0,如果原数据长度恰好是16的倍数,也要补16个0

ISO10126:最后一个字节是填充的字节数(包括最后一字节),其他全部填随机数

1 2 3 4 5 6 7 8 9 10 – x x x x x 6

填充6个字节

PKCS5(PKCS7):应用比较多,最后一组缺几个字节就填充几

1 2 3 4 5 6 7 8 9 10 – 6 6 6 6 6 6

前面10个字节,缺6字节才能为一组,填充6个6;如果恰好是16个字节,则填充16个16.

注意:JDK1.8之前,AES加密不支持AES-256,会报错,参看我另一边文章:

CSDN

RSA 加密

RSA 以麻省理工学院的科学家(Rivest、Shamir 和 Adleman)的名字命名, 于1977 年首次公布。它是一种非对称算法,它使用公开的已知密钥进行加密,但需要另外一个不同的密钥进行解密,这个不同的密钥只有预期的接收者知道。

网上不少例子说的是公钥用于加密,私钥用于解密,其实这个说法不对,私钥和公钥是一对,都可以加解密,配对使用,只不过公钥可以公布出去,而私钥是持有者自己保留的

一般的用法是私钥加密用于签名防数据被篡改,公钥加密用于加密防敏感信息,防止泄露

  • 私钥加密公钥解密,能证明“私钥拥有者” 的唯一身份,用于签名。
  • 公钥加密私钥解密,确保发送的信息,只有"私钥拥有者"能够解密。

这块先卖个关子,理解不了的话后面给大家介绍开放平台API验签和加密流程的时候再给大家细讲。

RSA 算法需要的计算量比 AES 高,但速度要慢得多。它比较适合用于加密少量数据。

RSA和AES结合使用

AES 算法的一个主要问题是,作为一种对称算法,它要求加密方和解密方使用相同的密钥。这就产生了一个关键的密钥管理问题——如何将非常重要的密钥分发给分布在世界各地的授权接收者,而不会冒在传输途中某个地方考虑不周导致密钥泄露的巨大风险?答案是结合 AES 和 RSA 加密的优势。

在包括互联网在内的许多现代通信环境中,大量交换的数据都通过快速 AES 算法进行加密。为了获得解密数据所需的密钥,授权接收者发布一个公钥,同时保留一个只有他们知道的相关私钥。然后,发送方使用该公钥对他们自己的 AES 密钥进行RSA加密传输给接收方,接收方使用私钥解密得到AES密钥,再用该密钥对数据进行解密。

RSA加密算法的意义

对信息进行RSA私钥加密后,因为公钥是公开的,每个拥有公钥的人都可以解密到加密的内容,相当于这个被私钥加密的信息,没有意义实际的。但他可以确定信息发送方式拥有私钥的人。

对信息进行RSA公钥加密后,发送给拥有私钥的人,只有拥有私钥的人才能解析消息。当拥有私钥的人回应信息的时,必然用私钥进行加密,发送给拥有公钥的人解密,仅能确认信息的接收方是拥有私钥的人。

因此:RSA加密的意义在于:身份确认

参考链接:RSA加密算法的意义_42261372的博客-CSDN博客_rsa公钥加密还是私钥加密

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值