当前位置:网站首页>取余操作是一个哈希函数
取余操作是一个哈希函数
2022-07-05 04:21:00 【蓝染k9z】
哈希
哈希有时候也被翻译为散列。
就是将任意长度的输入,通过哈希算法,压缩为某一固定长度的输出。
- 假如要快速读写100万条数据记录,要达到高速地存取,但是由于条件的限制,我们并没有能够容纳100万条记录的连续地址空间,该怎么办。
- 看看系统是否可以提供若干个较小的连续空间,而每个空间又能存放一定数量的记录。
- 比如我们找到了100个较小的连续空间。也就是说,这些空间彼此之间是被分隔开来的,但是内部是连续的,并足以容纳1万条记录连续存放,那么我们就可以使用余数和同余定理来设计一个散列函数,并实现哈希表的结构。

- 假设有两条记录,它们的记录标号分别是1和101.
- 我们把这些模100之后余数都是1的,存放到第1个可用空间里。
- 依此类推,将余数为2的2、102、202等,存放到第2个可用空间。
- 这样,我们就可以根据求余的快速数字变化,对数据进行分组,并把它们存放到不同的地址空间里。
- 而求余操作本身非常简单,因此几乎不会增加寻址时间。

为了增加数据散列的随机程度,可以在公式中加入一个较大的随机数MAX
在新的计算公式作用下,就会被分配到不同的可用空间中
使用了MAX这个随机数之后,被分配到同一个空间中的记录就更加“随机”,更适合需要将数据重新洗牌的应用场景,比如加密算法、MapReduce中的数据分发、记录的高速查询和定位等等。
加密
假设要加密一组三位数,那么设定一个这样的加密规则:
- 先对每个三位数的个、十和百位数,都加上一个较大的随机数。
- 然后将每位上的数都除以7,用所得的余数代替原有的个、十、百位数。
- 最后将第一位和第三位交换。
这就是一个基本的加密变换过程。
假如说,我们要加密625,随机数选择590127.
那百、十、个位分别加上这个随机数,就变成了590133 590129 590132,三位分别除以7求余后得到5 1 4。
最终得到的数字就是415。
如果加密的人知道加密的规则,那就可以算出原始的数据是625.
(提示:590127%7=6)
边栏推荐
- Function (basic: parameter, return value)
- Function (error prone)
- [phantom engine UE] package error appears! Solutions to findpin errors
- Kwai, Tiktok, video number, battle content payment
- Uni app common functions /api
- Power management bus (pmbus)
- Components in protective circuit
- Network layer - forwarding (IP, ARP, DCHP, ICMP, network layer addressing, network address translation)
- 【UNIAPP】系统热更新实现思路
- 【虛幻引擎UE】實現UE5像素流部署僅需六步操作少走彎路!(4.26和4.27原理類似)
猜你喜欢

函数(基本:参数,返回值)

【虚幻引擎UE】实现测绘三脚架展开动画制作

Fuel consumption calculator

Looking back on 2021, looking forward to 2022 | a year between CSDN and me

【虚幻引擎UE】打包报错出现!FindPin错误的解决办法

Alibaba cloud ECS uses cloudfs4oss to mount OSS

Mxnet imports various libcudarts * so、 libcuda*. So not found

Seven join join queries of MySQL

Kwai, Tiktok, video number, battle content payment

【虚幻引擎UE】实现UE5像素流部署仅需六步操作少走弯路!(4.26和4.27原理类似)
随机推荐
Introduction to RT thread kernel (5) -- memory management
机器学习 --- 神经网络
Fonction (sujette aux erreurs)
A应用唤醒B应该快速方法
如何优雅的获取每个分组的前几条数据
Sequelize. JS and hasmany - belongsto vs hasmany in serialize js
Burpsuite grabs app packets
Sequence diagram of single sign on Certification Center
Threejs factory model 3DMAX model obj+mtl format, source file download
Ctfshow web entry code audit
A應用喚醒B應該快速方法
Machine learning -- neural network
Clickpaas low code platform
Network layer - forwarding (IP, ARP, DCHP, ICMP, network layer addressing, network address translation)
TPG x AIDU | AI leading talent recruitment plan in progress!
官宣!第三届云原生编程挑战赛正式启动!
机器学习 --- 决策树
mysql的七种join连接查询
Laravel8 export excel file
MySQL: view with subquery in the from clause limit