哈希函数

  1. 哈希函数(Hash Function),也称为散列函数或杂凑函数。
  2. 哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值、杂凑值或者消息摘要。
  3. 它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
  4. 无论输入是什么数字格式、文件有多大,输出都是固定长度的比特串。 以比特币使用的Sh256算法为例,无论输入是什么数据文件,输出就是256bit。每个bit就是一位0或者1,256bit就是256个0或者1二进制数字串,用16进制数字表示,每一位16进制数字可以代表4位bit。256位bit用16进制数字表示,等于64位。

理解

例如:
把1569用“加法”加密得到(这里假设’‘加法’‘是我们定的一种哈希算法)

1+5+6+9=21

21就是1569的哈希值,根据哈希值21是很难推出原文是1569的

HD5

MD5算法实现:

输入:不定长度信息(要加密的信息)

输出:固定长度128-bits。由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

基本方式为:求余、取余、调整长度、与链接变量进行循环运算。得出结果。

具体参考https://blog.csdn.net/u011377996/article/details/86365533

SHA-1

SHA-1 可以对不超过 2 64 2^{64} 264比特的消息进行计算,输入以512位数据块为单位处理,产生160比特的消息摘要作为输出。该算法的处理流程主要分为5个步骤:

步骤 1:对输入的数据进行填充,是的数据位长度对512求余的结果为448。填充比特 串的最高位补一个 1,其余位补0。附加填充总是要进行的,即使消息的长度满足所要求的长度。

步骤 2:将64比特加在报文后表示报文的原始长度,是报文长度为512比特的倍数。

步骤 3:一个160位MD缓存用以保存中间和最终的散列函数的结果。它可以表示为32位寄存器(A,B,C,D,E)。初始化为 A=67452301,B=EFCDAB89,C=98BADCFE, D=10325476,E=C3D2E1F0。前四个是与MD5相同的,但存储为big-endian format,即将高 序字节存储在起始地址。

步骤 4: 以512比特(16个字)分组处理消息。此算法的核心就是称为压缩算法(compression function)的模块。这个模块包括4次循环,每次循环又包含20 个处理步骤。 4次循环具有相似的结构,但每次循环使用不同的基本逻辑函数,称为 f1,f2,f3,f4。

步骤 5:全部L个512位数据块处理完毕后,输出160位消息摘要。

作者:cutoutsy
链接:https://www.jianshu.com/p/96d9f3bbcfdd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

哈希算法、HD5、SHA-1相关推荐

  1. SHA 256算法是什么?哈希算法有哪些特点,主要应用在哪里?

    无论数字证书品牌.价格和类型如何,所有SSL证书的通用规范是采用SHA 256算法,您可以在证书详细信息或产品信息中列出的功能中看到.对于非技术人员来说,SHA 256 算法通常是个谜,但是锐成信息将 ...

  2. sha算法 哈希算法_SHA1哈希算法教程及其用法示例

    sha算法 哈希算法 SHA1 is a hash algorithm that is created by the National Security Agency (NSA). SHA1 hash ...

  3. 用SHA哈希算法加密密码文件

    在Linux的发行版中,用户的登录密码通常是用MD5算法散列后存储于/etc/shadows文件中的.这种方法的安全性因MD5容易碰撞的特性而相对较弱,虽然这并不意味着MD5对于密码散列算法不可靠.但 ...

  4. 基于哈希算法的web账户口令存储方法

    web账户的口令不能直接明文存储,这样太不安全了,需要加密存储. 存储策略-- 基于安全哈希算法加密存储用户的口令 估计基于安全哈希算法的存储方式应该已经广泛使用了,不过奇怪的是网上难以找到相关应用的 ...

  5. 密码学 / 哈希算法

    一.诞生原因 在日常生活中,每个人去银行.坐火车都需要身份证证明自己的身份.身份证存在的目的就是要证明我真的是我. 同样在网络中,一个文件是否被改过(更改之后就是新的文件),需要一个"身份证 ...

  6. .NET平台开源项目速览(12)哈希算法集合类库HashLib

    阅读目录 1.哈希算法介绍 2.HashLib功能介绍 .NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部 ...

  7. 数据结构与算法之美-哈希算法

    哈希算法的定义和原理 将任意长度的二进制串映射为固定长度的二进制串. 这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制串就是哈希值. 设计一个优秀的哈希算法需要满足: 从哈希值不能反向推 ...

  8. 群人各说什么是哈希算法?

    这个HASH算法不是大学里数据结构课里那个HASH表的算法.这里的HASH算法是密码学的基础,比较常用的有MD5和SHA,最重要的两条性质,就是不可逆和无冲突. 所谓不可逆,就是当你知道x的HASH值 ...

  9. java 哈希算法_选择Java密码算法第1部分-哈希

    java 哈希算法 抽象 这是涵盖Java加密算法的三部分博客系列文章的第1部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥 ...

最新文章

  1. 魅族员工跳槽OPPO后感慨,公司高层各种反思,不会骂员工废材
  2. AndroidStudio设置背景颜色,字体大小,默认显示行号
  3. python自带模块连接数据库_Python模块Sqlite数据库模块
  4. 实验八 《Coderxiaoban团队》团队作业4:基于原型的团队项目需求调研与分析
  5. 网站系统安全防护体系建设方案
  6. 线性代数笔记:Hadamard积
  7. c#连接远程sqlserver2008_C#用代码控制网络断开与重连
  8. python爬虫urllib 数据处理_python爬虫学习笔记(三)-爬取数据之urllib库
  9. 能让你少写1000行代码的20个正则表达式
  10. 给数据库字段增加前缀
  11. 当你感到迷茫焦虑时,请听听白岩松这个演讲
  12. PTA5-53 两个有序序列的中位数
  13. python-引用/模块
  14. uniapp vite 路由跳转、登录模块封装(非无感登录)
  15. 零基础学习云计算需要准备什么?
  16. html蒙版源代码,jquery蒙版控件实现代码_jquery
  17. Matlab-syms用法
  18. 《管理者必读12篇》如何购买
  19. 命令 / Linux / apt remove 和 apt purge 的区别
  20. PyScripter中文乱码原因

热门文章

  1. Android 8.1 Doze模式分析(二)——Light Doze模式
  2. UVA 10586(多项式相除取余)
  3. 用python如何制作表格步骤_教你如何使用Python轻松制作漂亮的表格
  4. centos sftp客户端 c 源码_如何在 Linux 系统中如何更改 SFTP 端口
  5. 【小家java】交换两个变量数值的方法(四种方法)
  6. 基于Cocos Creator 2.3.0,使用TypeScript(ts)实现微信跳一跳
  7. libiconv移植到android
  8. 第三十章 光照及贴图总结
  9. linux添加用户和用户组
  10. 希望家人和朋友都平安健康