当前位置:网站首页>取余操作是一个哈希函数
取余操作是一个哈希函数
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)
边栏推荐
- 我国算力规模排名全球第二:计算正向智算跨越
- OWASP top 10 vulnerability Guide (2021)
- 【FineBI】使用FineBI制作自定义地图过程
- 基于TCP的移动端IM即时通讯开发仍然需要心跳保活
- Uni app change the default component style
- Phpmailer reported an error: SMTP error: failed to connect to server: (0)
- How does the applet solve the rendering layer network layer error?
- A application wakes up B should be a fast method
- Open graph protocol
- Machine learning -- neural network
猜你喜欢
OWASP top 10 vulnerability Guide (2021)
[phantom engine UE] only six steps are needed to realize the deployment of ue5 pixel stream and avoid detours! (the principles of 4.26 and 4.27 are similar)
Is "golden nine and silver ten" the best time to find a job? Not necessarily
Learning notes 8
电源管理总线 (PMBus)
Components in protective circuit
Kwai, Tiktok, video number, battle content payment
The development of mobile IM based on TCP still needs to keep the heartbeat alive
首席信息官如何利用业务分析构建业务价值?
C26451: arithmetic overflow: use the operator * on a 4-byte value, and then convert the result to an 8-byte value. To avoid overflow, cast the value to wide type before calling the operator * (io.2)
随机推荐
假设检验——《概率论与数理统计》第八章学习笔记
Threejs realizes rain, snow, overcast, sunny, flame
Rome chain analysis
Fonction (sujette aux erreurs)
Ctfshow 2022 Spring Festival welcome (detailed commentary)
Interview related high-frequency algorithm test site 3
Sequelize. JS and hasmany - belongsto vs hasmany in serialize js
[phantom engine UE] realize the animation production of mapping tripod deployment
Use threejs to create geometry and add materials, lights, shadows, animations, and axes
Rust blockchain development - signature encryption and private key public key
mxnet导入报各种libcudart*.so、 libcuda*.so找不到
How to realize real-time audio and video chat function
How to solve the problem that easycvr changes the recording storage path and does not generate recording files?
Bit operation skills
Behavior perception system
[untitled]
指针函数(基础)
A应用唤醒B应该快速方法
[untitled]
This is an age of uncertainty