【README】

部分内容总结自:

摘要与加密的区别(以MD5算法为例) - 掘金https://juejin.cn/post/6844903561478799368


【1】摘要算法与加密区别

【1.1】摘要算法(不可逆)

1)摘要算法:

  • 说白了,就是一个散列或哈希函数,摘要就是一个hash值,仅此而已;理论上讲,这个hash值一旦生成,则无法可逆反推出 原生值;根本不存在加解密一说了;

详细说明:

摘要是哈希值,我们通过散列算法比如MD5算法就可以得到这个哈希值。
摘要只是用于验证数据完整性和唯一性的哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的。
不管原始数据是什么样的,得到的哈希值都是固定长度的,也就是说摘要并不是原始数据加密后的密文,只是一个验证身份的令牌。所以我们无法通过摘要解密得到原始数据。


【1.2】加密算法(可逆)

【1.2.1】加密算法定义:

  • 加密是通过 “加密算法” 将 "明文" 加密成 “密文”。 我们可以通过 “密钥” 和 “解密算法” 将 “密文” 还原成 “明文”。

【1.2.2】加密算法分类:(可逆,即明文加密成密文,密文可以解密出明文)

1)对称加密

  • 加解密使用同一个密钥;

2)非对称加密:有公钥和私钥之分;私钥自己保存,公钥公开出来,给他人使用;但公钥和私钥是成对的,它们互相解密;

  • 用途1:-可以用公钥加密,私钥解密;保护信息传输安全;如网络上传输用户名和密码时就可以采用这种方式,前端用公钥对用户名密码加密,网络上传输的是密文,后端用私钥解密;
  • 用途2-可以用私钥加密(数字签名),公钥解密(验证签名);用于验证消息发送方是否正确;

【例】私钥签名,公钥验签例子

如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知
道我的公钥是1,那么这种加密有什么用处呢?

但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他
解密看是不是c。他用我的公钥1解密,发现果然是c。
这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。


【2】MD5使用场景(摘要算法使用场景)

平时的软件研发中经常使用MD5校验消息是否被篡改、验证文件完整性。

场景1-验证是否被篡改:

  • 比如,上传下载文件。数据的 发送方 将原始数据生成MD5摘要,然后把 原始数据 与其 MD5摘要一起发送给 接收方;接收方收到数据后,先将原始数据用MD5算法生成摘要信息,然后再将此摘要信息与发送方发过来的摘要信息进行比较,如果一致就认为原始数据没有被修改、或者损坏。

场景2-防止抵赖:

  • 例如A写了一个文件,某认证机构对此文件用MD5算法产生摘要信息并做好记录。若以后A说这文件不是他写的,权威机构只需对此文件重新产生摘要信息,然后跟记录在册的摘要信息进行比对,若摘要信息相同,则证明为A写的文件。

摘要算法与加密(以MD5算法为例)相关推荐

  1. 【中级软考】RSA、IDEA、RC4、MD5算法分别是什么?

    RSA(Rivest Shamir Adlemen,一种因特网加密和认证体系) IDEA Internationale Data Encrypt Algorithm 一种国际数据加密算法 RC4 (R ...

  2. 用PHP实现MD5算法

    在上一篇文章 << Content-MD5字段 >>中我们有提到MD5算法,此处MD5算法的作用是验证文件的完整性,这与MD5算法开始的应用场景是一致的,即在90年代被广泛使用 ...

  3. 常见的加密和解密算法—MD5

    转载:https://www.cnblogs.com/maohuidong/p/7967257.html 常见的加密和解密算法-MD5 一.MD5加密概述 Message Digest Algorit ...

  4. 数据结构和算法(二):摘要算法之SHA和MD5

    几种常用的加密算法,篇幅的百分之九十都是从其他博客摘抄的,因为就我自己的能力,是没法写全这些内容的.另外这些算法内部深层的原理就不解释了(看过相关博客和公众号,看不懂,尴尬),只做简单的介绍,相信这样 ...

  5. 信息摘要算法之一:MD5算法解析及实现

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. ...

  6. MD5算法加密~16位、32位、64位

    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法). MD5算法加密~16位.32位.64位. 1991年,由Ronald L. Rivest开发出来,经MD2.MD ...

  7. C#的加密解密算法,包括Silverlight的MD5算法

    C#的加密解密算法,包括Silverlight的MD5算法 下面是一段加密解密工具类,其中的WinFormMD5Encrypt方法可以使得Winform和WebForm下的MD5加密结果一致,默认他们 ...

  8. MD5的加密和解密算法

    先解释下: MD5是不可逆,这里的加密解密,你可以看到是对MD5算法先加密后解密,而不是对MD5的解密 package com.test;import java.security.MessageDig ...

  9. 安卓中的对称加密,非对称加密,MD5加密的算法

    转自:http://blog.csdn.net/fengkaungdewoniu/article/details/52846025 安卓中使用的加密算法可以说有三种:对称加密.非对称加密,及MD5加密 ...

最新文章

  1. 使用blowery.Web.HttpCompress.dll对aspx压缩
  2. 用 TypeScript 编写一个 React 服务端渲染库(1)
  3. Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略
  4. SharePoint技术峰会2009视频(6)
  5. 加密、解密、摘要、签名、证书一文搞懂
  6. 内存管理范围和@property
  7. 分布式架构--基本思想汇总
  8. Spring boot mongoDB的总结
  9. 【智慧城市】GIS数据获取-获取道路/水路数据
  10. 联想小新锁屏壁纸怎么换_联想_ThinkPad|ThinkCentre|ThinkStation服务与驱动下载_常见问题...
  11. log4j2漏洞复现
  12. PowerDesigner设计业务流程图
  13. 经典指标:SAR算法和应用
  14. 你不知道的Linux的发展史
  15. Idea关于Module is not backed by gradle的问题(部分转)
  16. python机器学习初探
  17. 人生观,世界观,价值观树立的方式
  18. MySQL-表连接的几种方式
  19. ios 获取电量百分比_iOS 获取电池电量
  20. c语言中while中的判断语句为感叹号x时是什么意思?

热门文章

  1. miller_rabin 证明与实现
  2. Codeforces Round #709 (Div. 1) B. Playlist 链表维护 + bfs
  3. Codeforces Round #709 (Div. 1) C. Skyline Photo dp + 单调栈优化
  4. CF 1475 F . Unusual Matrix 思维
  5. 2021牛客暑期多校训练营3
  6. 牛客题霸 [栈和排序] C++题解/答案
  7. CF903G-Yet Another Maxflow Problem【线段树,最大流】
  8. YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】
  9. P3857-[TJOI2008]彩灯【线性基】
  10. 【并查集】【最小生成树】【贪心】给水(jzoj 2015)