当前位置:网站首页>取余操作是一个哈希函数
取余操作是一个哈希函数
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)
边栏推荐
- FFmepg使用指南
- 【虚幻引擎UE】实现UE5像素流部署仅需六步操作少走弯路!(4.26和4.27原理类似)
- Online sql to excel (xls/xlsx) tool
- Summary of scene design
- 指针函数(基础)
- 官宣!第三届云原生编程挑战赛正式启动!
- Open graph protocol
- Function (basic: parameter, return value)
- Sword finger offer 04 Search in two-dimensional array
- Ctfshow 2022 Spring Festival welcome (detailed commentary)
猜你喜欢
首席信息官如何利用业务分析构建业务价值?
Alibaba cloud ECS uses cloudfs4oss to mount OSS
How to get the first few pieces of data of each group gracefully
Kwai, Tiktok, video number, battle content payment
函数(基本:参数,返回值)
American 5g open ran suffered another major setback, and its attempt to counter China's 5g technology has failed
The scale of computing power in China ranks second in the world: computing is leaping forward in Intelligent Computing
[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)
10种寻址方式之间的区别
Serpentine matrix
随机推荐
All in one 1413: determine base
[Chongqing Guangdong education] 2408t Chinese contemporary literature reference test in autumn 2018 of the National Open University
Sword finger offer 04 Search in two-dimensional array
How to solve the problem that easycvr changes the recording storage path and does not generate recording files?
【虚幻引擎UE】打包报错出现!FindPin错误的解决办法
About the project error reporting solution of mpaas Pb access mode adapting to 64 bit CPU architecture
指针函数(基础)
【虛幻引擎UE】實現UE5像素流部署僅需六步操作少走彎路!(4.26和4.27原理類似)
How to carry out "small step reconstruction"?
[popular science] basic knowledge of thermal design: heat dissipation analysis of 5g optical devices
How to get the first few pieces of data of each group gracefully
Introduction to RT thread kernel (5) -- memory management
Burpsuite grabs app packets
open graph协议
WGS84 coordinate system, web Mercator, gcj02 coordinate system, bd09 coordinate system - brief introduction to common coordinate systems
Threejs rendering obj+mtl model source code, 3D factory model
根据入栈顺序判断出栈顺序是否合理
机器学习 --- 决策树
Rust blockchain development - signature encryption and private key public key
Phpmailer reported an error: SMTP error: failed to connect to server: (0)