哈希算法的原理和用途详解
什么是哈希算法?哈希是一种加密算法,也称为散列函数或杂凑函数。哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
Hash的特点
易压缩:对于任意大小的输入x,Hash值的长度很小,在实际应用中,函数H产生的Hash值其长度是固定的。
易计算:对于任意给定的消息,计算其Hash值比较容易。
单向性:对于给定的Hash值,要找到使得在计算上是不可行的,即求Hash的逆很困难。在给定某个哈希函数H和哈希值H(M)的情况下,得出M在计算上是不可行的。即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。
抗碰撞性:理想的Hash函数是无碰撞的,但在实际算法的设计中很难做到这一点。
有两种抗碰撞性:一种是弱抗碰撞性,即对于给定的消息,要发现另一个消息,满足在计算上是不可行的;另一种是强抗碰撞性,即对于任意一对不同的消息,使得在计算上也是不可行的。
高灵敏性:这是从比特位角度出发的,指的是1比特位的输入变化会造成1/2的比特位发生变化。消息M的任何改变都会导致哈希值H(M)发生改变。即如果输入有微小不同,哈希运算后的输出一定不同。
哈希算法有什么用途?
哈希算法可以检验信息是否是相同的,这样的优势可以节省重复文件传送的时间。
举一个生活中很平常的例子,我们在生活工作中会使用一些软件给别人传送文件数据,如果有人传送了一份文件给一个人,然后又有一个人传送了相同的文件给了另外一个人,那么这个社交软件在第二次传送文件的时候会对比两次传送的哈希值,发现是相同的,该软件就不会再次上传文件给服务器了。
除此之外,哈希算法还可以检验信息的拥有者是否真实。
比如,我们在一个网站注册一个账号,如果网站把密码保存起来,那这个网站不论有多安全,也会有被盗取的风险。但是如果用保存密码的哈希值代替保存密码,就没有这个风险了,因为哈希值加密过程是不不可逆的。
哈希算法会不会被破解?
从理论上说,哈希值是可以被获得的,但是对应的用户密码很难获得。
假设一个网站被攻破,黑客获得了哈希值,但仅仅只有哈希值还不能登录网站,他还必须算出相应的账号密码。
计算密码的工作量是非常庞大且繁琐的,严格来讲,密码是有可能被破译的,但破译成本太大,被成功破译的几率很小,所以基本是不用担心密码泄露的。
当然,黑客们还可以采用一种物理方法,那就是猜密码。他可以随机一个一个的试密码,如果猜的密码算出的哈希值正好与真正的密码哈希值相同,那么就说明这个密码猜对了。
密码的长度越长,密码越复杂,就越难以猜正确。如果有一种方法能够提高猜中密码的可能,那么可以算是哈希算法被破解了。
比如说,例如原本猜中的概率是1/10000000000000,现在增加到了1/1000。如果每猜一个密码需要1秒,按照之前的概率猜,直到地球毁灭都可能没猜中,但后者只需要1小时就足够了。在这样的情况下,哈希算法就算是被破解啦。
以上,是为大家分享"哈希算法的原理和用途详解”的全部内容,如果用户遇到的问题不能解决,可通过wosign官网客服寻求帮助,凡是选择wosign ssl证书的网站用户,wosign可提供免费一对一的ssl证书技术部署支持,免除后顾之忧.
哈希算法的原理和用途详解相关推荐
- 【数据结构与算法】哈希算法的原理和应用详解!
在程序员的实际开发中,哈希算法常常能用得到,本文以哈希算法的原理和应用为核心,和大家详细讲解一下哈希算法的概念.常见算法以及原理.在信息安全的应用等等. 一.概念 哈希表就是一种以 键-值(key-i ...
- 「数据结构与算法」哈希算法的原理和应用详解
在程序员的实际开发中,哈希算法常常能用得到,本文以哈希算法的原理和应用为核心,和大家详细讲解一下哈希算法的概念.常见算法以及原理.在信息安全的应用等等. 一.概念 哈希表就是一种以 键-值(key-i ...
- 排序算法——冒泡排序原理动图详解及实现
主要涉及的是内部排序 交换排序 => 冒泡排序 快速排序 选择排序 直接选择排序 堆排序 插入排序 直接插入排序 希尔排序 归并排序 冒泡排序 1. 简介 冒泡排 ...
- 一致性哈希算法 mysql_一致性哈希算法 CARP 原理解析, 附 Golang 实现
一致性哈希算法 CARP 原理解析, 附 Golang 实现 在后端服务开发的过程中, 遇到了这样一个问题: 需要在 mysql 前面部署 redis 做一层缓存, 要求 redis 是集群部署, 并 ...
- 11 种加密 哈希算法的原理及其 Java 实现
11 种加密 & 哈希算法的原理及其 Java 实现 一.目的 二.运行环境 三.基本原理及步骤 (I)各种加密算法的原理: ① DES 数据加密标准(Data Encryption Stan ...
- 字符串处理【字典树】 - 原理 字典树详解
字符串处理[字典树] - 原理 字典树详解 字典树,又称Trie树.单词查找树,是一种树形结构,也是哈希树的一种变种,主要用于统计.排序和存储大量的字符串(但不限于字符串),所以经常被搜索引擎系统用于 ...
- python的编程模式-Python设计模式之状态模式原理与用法详解
本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
FROM: http://blog.csdn.net/u012162613/article/details/43157801 DeepLearning tutorial(1)Softmax回归原理简介 ...
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...
最新文章
- 【原创】jquery常见的条件判断类型
- PHP在使用正则表达式验证,防注入的时候要注意一下的细节
- Unity Game窗口中还原Scene窗口摄像机操作 强化版
- keil编译时提示 Undefined symbol __ROR
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
- GDCM:DICOM文件转储ADAC文件的测试程序
- 线性筛素数的实现与证明
- go语言的特殊变量 iota
- VC Redist Installer 1.6下载
- 元数据、数据元、资源目录
- Connection: Keep-Alive
- 问卷星刷问卷(一)xpath使用
- python爬虫得到谷歌学术搜索结果
- 超出部分隐藏以省略号表示
- Masked Autoencoders Are Scalable Vision Learners (MAE)
- 深夜爬虫, 我很抱歉 , 附微信 “ 网抑云” 公众号爬虫教程!
- 第二届「科学探索奖」获奖名单公布
- linux发送免费短信
- VC 获取控制台窗体的句柄(hWnd)
- 什么是聚合路由器?主要运用在哪些方面?