密码学 / 哈希算法

2023-11-03

一、诞生原因

在日常生活中,每个人去银行、坐火车都需要身份证证明自己的身份。身份证存在的目的就是要证明我真的是我。

同样在网络中,一个文件是否被改过(更改之后就是新的文件),需要一个“身份证”证明,这里就需要了 hash 算法了。

二、特点

为了满足上述要求,需要 hash 算法满足如下特点:

  • 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法);
  • 对输入数据非常敏感,哪怕原始数据只修改了 1 Bit,最后得到的哈希值也大不相同;
  • 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;
  • 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。

三、种类

1、MD5,即:Message-Digest Algorithm 5,已被抛弃。

2、SHA 系列,即:Secure Hash Algorithm,安全散列算法,是一个密码散列函数家族,由美国国家安全局(NSA)设计,并由美国国家标准与技术研究院(NIST)发布,是美国的政府标准。包括 SHA-0 系列、SHA-1 系列、SHA-2 系列和 SHA-3 系列。SHA-256 是 SHA-2 系列函数之一
对于 SHA-256

  • 无论输入多长,都输出 64 个字符,共 32 字节(byte),256 位(bit)
  • 输出只包含数字 0~和字母 A~F,大小写不敏感

(1)SHA-1

(2)SHA-2,包括如下算法:

  • SHA-224,SHA256 的阉割版。
  • SHA-256
  • SHA-384,SHA384 的阉割版。
  • SHA-512

(3)SHA-3

四、区别

算法名称 摘要长度
MD5 128bit
SHA-1 160bit
SHA-224 224bit
SHA-256 256bit
SHA-384 384bit
SHA-512 512bit

五、原理

原理复杂,有需要在学习吧。一般能明白该技术解决什么问题,怎么解决就能解决 80% 的问题了,二八原则嘛。

(SAW:Game Over!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码学 / 哈希算法 的相关文章

随机推荐

  • OpenCV(四)——图像特征与目标检测

    课程一览 目录 1 图像特征的理解 2 形状特征描述 2 1 HOG原理 2 2 Harris 2 3 SIFT
  • android上java.util.ConcurrentModificationException错误解决

    今天在运行Android代码 发现程序崩溃了 发现错误为 java util ConcurrentModificationException 错误栈在list里面 然后 看异常变量 为list本身错误 笔者马上想起来了 list和vecto
  • 计算机网络--IP数据报格式

    解析 1 版本 占4位 指IP协议的版本 通信双方使用的IP协议版本必须一致 目前广泛使用的IP协议版本号为4 即IPv4 2 首部长度 占4位 可表示的最大十进制数值是15 请注意 这个字段所表示数的单位是32位字长 1个32位字长是4字
  • WIN10上UG10.0安装步骤及出错解决

    UG10 0安装步骤及出错解决 准备安装包UG10 0 安装软件 安装java虚拟机 运行launch 安装授权 安装主文件 破解 准备安装包UG10 0 下载链接 提取码 s4dh 安装软件 安装java虚拟机 以管理员身份运行 运行la
  • yaml文件的数据

    com alipay function test base TestData caseName 1 查询店铺详情 queryStoreDetailV2 description normal dataItems loginid 1342708
  • 使用JPA根据实体类生成数据库表

    springboot数据库 一 springboot JPA JPA springboot jpa 数据库的一系列的定义数据持久化的标准的体系 学习的目的是 利用springboot实现对数据库的操作 第一步 添加springboot da
  • 获取JavaScript时间戳函数的方法和js时间戳转时间方法

    文章目录 一 JavasCRIPT时间转时间戳 方法一 Date now 方法三 valueOf 方法四 getTime 方法五 Number 二 js时间戳转时间 方法一 生成 yyyy MM dd 上 下 午hh mm ss 格式 方法
  • java字符串

    java字符串 java字符串 一 String类 一 特点 二 构造方法 String str abc 与 String str2 new String abc 的区别 三 常用方法 intern String类拼接 字符串转数字 字符串
  • linux qt目录查看,QT遍历目录获取文件信息

    QFileInfo获取文件信息 文件名称 路径 大小 创建时间 修改时间 权限等使用路径 UNIX home dipper file1Windows C dipper file1 构造函数 QFileInfo fileInfo path Q
  • 【翻译 + 整理】Qt样式表详解(10):伪状态

    1 active 部件处于活动的状态 2 adjoins item 当QTreeView的 branch与某个item相邻时 将设置此状态 QTreeView branch background red QTreeView branch a
  • 蓝桥杯流转呼吸灯

    include STC15F2K60S2 h include
  • Python直接使用plot()函数画图

    目录 一 plot 函数的认识 二 plot 函数基本运用 三 plot 函数数据可视化画图以及图元基本参数设置 一 plot 函数的认识 在使用Python进行数据可视化编程中matplotlib库是我们用来对数据进行画图常用的第三方库
  • 时间戳转换成字符串,返回Invalid Date(自己遇到的坑)

    今天在开发的过程中 遇到一个比较坑自己的问题 将时间戳转换成正常日期的时候 总是会返回Invalid Date 排查了好久 在想为什么是这个结果 在控制台里面测试都是ok的呀 于是乎 想到了自己再后端定义的时候 时间戳定义的是字符串格式的数
  • Python 使用 Thrift 连接 HBASE 进行操作

    在工作中想要使用Python对HBASE进行操作 主要用来获取数据进行分析 HBASE提供了 Thrift 借口 通过查看API 进行了一些的尝试 下面就是使用Python的相关代码 在使用之前需要启动 HBASE的Thrift和安装pyt
  • 分布式系统设计的求生之路

    作者 作者 Simon 腾讯后台开发高级工程师 链接 http wetest qq com lab view id 105 著作权归作者所有 商业转载请联系WeTest获得授权 非商业转载请注明出处 分布式系统理念渐渐成为了后台架构技术的重
  • 嵌入式入门教学——C51(中)

    嵌入式入门教学汇总 嵌入式入门教学 C51 上 嵌入式入门教学 C51 中 嵌入式入门教学 C51 下 文章中所使用到的所有代码模块 免费 基于STC89C52RC的代码模块资源 CSDN文库 目录 七 矩阵键盘 八 定时器和中断 九 串口
  • win10常用操作集合 - vhd/wsl/等等

    文章目录 wsl常用操作 cli操作 vhd常用操作 UI操作 扩容 缩容 方法一 常规方法 方法二 碎片整理 常见问题1 win10 UI 基本配置 win10网络配置 防火墙配置 wsl常用操作 cli操作 前提 BIOS要使能虚拟化相
  • MATLAB搜索路径的查看和设置方法

    MATLAB搜索路径的查看和设置方法 1 查看matlab的搜索路径 单击matlab主界面菜单工具栏中的 设置路径 按钮 打开 设置路径 对话框 左侧的几个按钮用来添加目录到搜索路径 还可以从当前的搜索路径中移除选择的目录 右侧的列表框列
  • 静态代码检查-Sonar-环境安装(一)

    1 前提 1 安装mysql数据库 5 6以上版本 本人数据库版本5 7 2 安装jdk1 8 本人jdk版本1 8 2 官网下载 https www sonarqube org downloads 最新版本6 7稳定版 选择 Show a
  • 密码学 / 哈希算法

    一 诞生原因 在日常生活中 每个人去银行 坐火车都需要身份证证明自己的身份 身份证存在的目的就是要证明我真的是我 同样在网络中 一个文件是否被改过 更改之后就是新的文件 需要一个 身份证 证明 这里就需要了 hash 算法了 二 特点 为了