首页 > 编程语言 >hash算法

hash算法

时间:2023-07-29 17:45:34浏览次数:27  
标签:输出 hash 映射 明文 算法 输入

1、介绍

hash算法是把任意长度的输入处理为固定长度的输出,该输出称为散列值或者hash值。

1.1 特点

多对一映射:由于输入有无限种可能,而输出有限,则必然是多对一

不可逆转:基于多对一映射,所以无法基于输出获取输入

1.2 作用

(1)数据校验

比较两个明文的hash值,如果相同,一般认为其明文也相同。如果不同,则必然明文不同。

可以验证明文是否一致,数据的完整性,以及数据防篡改。

(2)负载均衡

优秀的hash算法,会尽可能将输入平均映射到各个输出。

对于比较,或者按序查找操作,可以极大的提高效率。用于改良相关算法,尤其是数据库和大数据场景。

2、性能评价

优秀的hash算法

(1)无法逆推

一般来说,hash值无法推算其明文

(2)输入输出不相关

微小变化,呈现完全不同的hash值

(3)高效计算hash

(4)映射概率平均

3、hash碰撞

3.1 链地址法

3.2 开放地址法

4、hash算法

md4、md5、sha-1

5、hash函数

(1)直接寻址法

(2)数字分析法

(3)平方取中法

(4)折叠法

(5)随机数法

(6)除留余数法

6、注意

(1)对于token或者登录凭证cookie,不建议使用hash,或者使用hash同时应该增加其它字段,比如用户名。

因为hash是可能重复的,会造成越权

(2)hash并不严格保密

比如将常用的账号、密码等其它数据进行hash转换,再与目标hash值比较,最后逐一测试对应的明文值

标签:输出,hash,映射,明文,算法,输入
From: https://www.cnblogs.com/wd404/p/17590187.html

相关文章

  • 【Matlab】基于粒子群优化算法优化BP神经网络的数据分类预测
    【Matlab】基于粒子群优化算法优化BP神经网络的数据分类预测(Excel可直接替换数据)1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码5.1fun.m5.2main.m6.完整代码6.1fun.m6.2main.m7.运行结果1.模型原理“基于粒子群优化算法优化BP神经网络的数据分类预测”是一种结合了粒......
  • JavaScript学习 -- SM3算法基本原理
    SM3算法是一种由国家密码管理局发布的哈希算法,被广泛用于数字签名和消息认证等应用中。在JavaScript中,我们可以使用第三方库来计算数据的SM3哈希值。本篇文章将介绍SM3算法的基本原理和相关技术,并提供一些实例来演示如何在JavaScript中使用SM3算法。SM3算法基本原理与MD5、SHA-1、S......
  • 算法题接雨水
    题目:给定一个长度为n的整数数组 height 。有 n 条垂线,第i条线的两个端点是 (i,0) 和 (i,height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:不能倾斜容器。设两指针i,j,指向的水槽板高度分别......
  • 一起学算法
    链表二分查找/排序二叉树堆/栈/队列哈希递归/回溯动态规划字符串双指针贪心算法模拟......
  • Java面试题 P12:HashMap和HashTable的区别?底层是怎么实现的?
    区别:1、HashMap:是线程不安全的,HashTable:每个方法都加了个线程锁(synchronized修饰),是线程安全的2、HashMap允许key和value为null,而HashTable不允许 底层实现:数据+链表实现  代码示例: 1publicstaticvoidmain(String[]args)2{3//HashMap......
  • 单调栈算法模板
    单调栈模板:单调栈模板:for(遍历这个数组)while(栈不为空&&栈顶元素<或者>当前元素) 栈顶元素出栈 更新结果 当前数据入栈例如单调递增的stack,python实现就是: stack=[] foriinrange(0,len(arr)): whilestackandstack[-1]>arr[i]: stack.po......
  • 算法编程中的Word 四兄弟 Word Break , Word Ladder, Word Search, Word Pattern
    Word四兄弟WordBreak,WordLadder,WordSearch,WordPattern,太容易出现了,针对性分析下。  829·字模式II算法困难通过率47% 描述给定一个pattern和一个字符串str,查找str是否遵循相同的模式。这里遵循的意思是一个完整的匹配,在一个字母的模式和一个非空的单词str之间......
  • 文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题
    文心一言VS讯飞星火VSchatgpt(67)--算法导论6.56题六、在HEAP-INCREASE-KEY的第5行的交换操作中,一般需要通过三次赋值来完成。想一想如何利用INSERTION-SORT内循环部分的思想,只用一次赋值就完成这一交换操作?文心一言:在HEAP-INCREASE-KEY的第5行交换操作中,我们可以通......
  • JavaScript学习 -- HMAC算法基本原理
    HMAC(Hash-basedMessageAuthenticationCode)算法是一种基于哈希算法的消息认证码算法。它可以用于验证和保护数据在传输过程中的完整性和真实性。在JavaScript中,我们可以使用HMAC算法来保证数据的安全性。本篇文章将介绍HMAC算法的基本原理和相关技术,并提供一些实例来演示如何在Ja......
  • 代码随想录算法训练营第三天| LeetCode 203.移除链表元素(同时也对整个单链表进行增删
    203.移除链表元素      题目链接/文章讲解/视频讲解::https://programmercarl.com/0203.%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.html    卡哥题目建议:本题最关键是要理解虚拟头结点的使用技巧,这个对链表题目很重要。   做题思路:   ......