部分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公钥加密还是私钥加密

AES加密和RSA加密详细原理及使用场景相关推荐

  1. linux 加密可逆,RSA加密是可逆的吗

    java rsa加密可逆吗可逆.有秘钥就成. linux上RSA加密每次都变化吗 加密解密的技术: 对称加密 加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文 分成数据块儿,一般来讲 ...

  2. Vue中前端加密使用RSA加密下的JSEncrypt防止明文暴露

    场景 前端使用Vue在进行登录时,需要将密码存进cookie中. 为了防止密码明文暴露,前端需要采用加密方式对密码进行加密. 常用加密方式之一就是RSA加密解密. RSA加密是一种非对称加密.可以在不 ...

  3. VC实现数据的加密和解密(MD5加密/DES/RSA加密解密)

    VC实现数据的加密和解密 由于生产实习的时间有限,加上自己这段时间致力于考研,因此,仅仅是实现了通过MD5/DES/RSA的简单的字符串的加密解密,希望有兴趣的兄弟姐妹能够完善它. 主要的程序如下: ...

  4. 京东post登陆参数js分析,密码加密的RSA加密实现

    老规矩先用错误信息登陆一下抓一下包,看看有那些post字段: uuid: cf0d4f92-c83b-451a-bc31-be4bf9c546a5eid: 5535JQZQ4ZUMHJEPDFQ7EI ...

  5. html post密码加密,京东post登陆参数js分析,密码加密的RSA加密实现

    老规矩先用错误信息登陆一下抓一下包,看看有那些post字段: uuid: cf0d4f92-c83b-451a-bc31-be4bf9c546a5eid: 5535JQZQ4ZUMHJEPDFQ7EI ...

  6. java 加密 c 解密_java处理加密文件---RSA加密和解密

    public class RSA { public static void main(String []args)throws Exception { String ptext = "he& ...

  7. RSA加密、解密、签名、验签(验证签名)RSA算法原理

    转载链接:https://www.jianshu.com/p/8dc4a5f64e06 https://www.cnblogs.com/pcheng/p/9629621.html RSA原理:http ...

  8. Crypto++库实现AES和RSA加密解密

    本文介绍使用Crypto++进行AES加密和RSA加密 Crypto++库在VS中配置方法 Crypto++库下载地址: https://www.cryptopp.com/, 目前已经更新到8.1版本 ...

  9. RSA加密和验签的原理及方法

    RSA加密和验签的原理及方法 本文大纲 一.RSA加密简介 二.RSA加密.签名区别 三.RSA的加密过程 四.RSA签名的过程 一.RSA加密简介 RSA加密:属于非对称加密的范畴 这种加密方式可在 ...

最新文章

  1. 告诉大家一个------无敌命令
  2. 最好用的 Python 虚拟环境,没有之一
  3. Leetcode题解(十七)
  4. 7-1 输出全排列 (20 分)(全排列+递归+图解)Come Baby
  5. java矩形翻转_如何判断一个点在旋转后的矩形中
  6. iOS学习笔记15-设计模式之 适配器模式
  7. 回飞锅有哪些功能_回飞锅的精髓,只由原创者荷兰BK掌控
  8. 记录——《C Primer Plus (第五版)》第八章编程练习第四题
  9. 对Boost.Asio中异步事件循环的理解
  10. 关于机器学习一些好的博客和资料
  11. html怎么编辑文字位置,html – 修正文本的位置背景剪辑
  12. 人工智能认知技术,在各行业的应用介绍
  13. Educational Codeforces Round 89 (Rated for Div. 2)
  14. 学习笔记-2-Review of Optimization-3-Quadratic
  15. 使用Jmeter做性能测试
  16. 【文献阅读】医学图像分割中的loss函数选择-Loss odyssey in medical image segmentation loss
  17. 基于公共知识和一次学习的多任务流量分类
  18. C语言math.h库函数中atan与atan2的区别
  19. web页面嵌入音乐播放器代码
  20. 韩语键盘输入对照(Korean_Keyboard)

热门文章

  1. day4 高阶函数 嵌套函数 装饰器 内置函数 列表生成式 迭代器 生成器
  2. 自媒体“人工智能小技巧”文章与视频合集(持续更新)
  3. 日语标点符号用法解说!
  4. YOLOv5全面解析教程③:更快更好的边界框回归损失
  5. bootstrap tooltip不起作用
  6. Mac 修改AppleID 使用“登录”钥匙串
  7. 区块链网发布区块链百科的步骤
  8. 中国国家气象局天气预报信息接口代码引用详细说明与教程
  9. python numpy矩阵_python中numpy矩阵运算操作大全(非常全)!
  10. 河南大学2019计算机专业录取分数线,河南大学优势热门专业分析及2019、2018、2017年各省录取分数线...