Hash,一般翻譯做"散列",也有直接音譯為"哈希"的,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射,pre-image),通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,l8l開(kāi)28O9發(fā)2756系統(tǒng)所以不可能從散列值來(lái)唯一的確定輸入值。簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。
HASH函數(shù)(計(jì)算機(jī)算法領(lǐng)域)
若結(jié)構(gòu)中存在和關(guān)鍵字K相等的記錄,則必定在f(K)的存儲(chǔ)位置上。由此,不需比較便可直接取得所查記錄。稱這個(gè)對(duì)應(yīng)關(guān)系f為散列函數(shù)(Hash function),按這個(gè)思想建立的表為散列表。
對(duì)不同的關(guān)鍵字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),這種現(xiàn)象稱碰撞。具有相同函數(shù)值的關(guān)鍵字對(duì)該散列函數(shù)來(lái)說(shuō)稱做同義詞。綜上所述,根據(jù)散列函數(shù)H(key)和處理沖突的方法將一組關(guān)鍵字映象到一個(gè)有限的連續(xù)的地址集(區(qū)間)上,并以關(guān)鍵字在地址集中的"象"作為記錄在表中的存儲(chǔ)位置,這種表便稱為散列表,這一映象過(guò)程稱為散列造表或散列,所得的存儲(chǔ)位置稱散列地址。
若對(duì)于關(guān)鍵字集合中的任一個(gè)關(guān)鍵字,經(jīng)散列函數(shù)映象到地址集合中任何一個(gè)地址的概率是相等的,則稱此類散列函數(shù)為均勻散列函數(shù)(Uniform Hash function),這就是使關(guān)鍵字經(jīng)過(guò)散列函數(shù)得到一個(gè)"隨機(jī)的地址",從而減少?zèng)_突。
常用HASH函數(shù)
·直接取余法:f(x):=x mod maxM;maxM一般是不太接近2^t的一個(gè)質(zhì)數(shù)。
·乘法取整法:f(x):=trunc((x/maxX)*maxlongit)mod maxM,主要用于實(shí)數(shù)。
·平方取中法:f(x):=(x*x div 1000)mod 1000000);平方后取中間的,每位包含信息比較多。
public class Main{
public static void main(String[]args)throws Exception{
//創(chuàng)建一個(gè)MessageDigest實(shí)例:
MessageDigest md=MessageDigest.getInstance("SHA-1");
//反復(fù)調(diào)用update輸入數(shù)據(jù):
md.update("Hello".getBytes("UTF-8"));
md.update("World".getBytes("UTF-8"));
byte[]result=md.digest();//20 bytes:db8ac1c259eb89d4a131b253bacfca5f319d54f2
System.out.println(new BigInteger(1,result).toString(16));
審核編輯:符乾江
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67501 -
哈希算法
+關(guān)注
關(guān)注
1文章
56瀏覽量
11133
發(fā)布評(píng)論請(qǐng)先 登錄
技術(shù)探索:獲取識(shí)貨商品詳情數(shù)據(jù)
亞馬遜商品詳情數(shù)據(jù)獲取實(shí)戰(zhàn):從商品鏈接提取 ID 到解析詳情
實(shí)戰(zhàn)指南:調(diào)用沃爾瑪平臺(tái) API 高效獲取商品詳情數(shù)據(jù)
RK3562 單板機(jī)系統(tǒng)開(kāi)發(fā)完全手冊(cè):U-Boot/Kernel/Rootfs 開(kāi)發(fā)與性能優(yōu)化
淘寶商品詳情API(tb.item_get)
OPC UA 服務(wù)端用戶認(rèn)證的底層邏輯:哈希與加鹽應(yīng)用詳解
ADI Trinamic如何讓伺服系統(tǒng)開(kāi)發(fā)化繁為簡(jiǎn)
京東平臺(tái)獲取商品詳情原數(shù)據(jù)API接口技術(shù)解析
淘寶商品詳情API接口:電商開(kāi)發(fā)的利器
睿擎混合部署方案:基于QT的電機(jī)驅(qū)動(dòng)系統(tǒng)開(kāi)發(fā)|技術(shù)集結(jié)
產(chǎn)品詳情查詢API接口
明遠(yuǎn)智睿SSD2351:開(kāi)啟嵌入式系統(tǒng)開(kāi)發(fā)新時(shí)代
瑞芯微RK3506 3核A7@1.5GHz+雙網(wǎng)口+雙CAN-FD 工業(yè)開(kāi)發(fā)板—Linux系統(tǒng)開(kāi)發(fā)手冊(cè)
STM32開(kāi)發(fā)入門(mén)進(jìn)階必備!《STM32嵌入式系統(tǒng)開(kāi)發(fā)—基于STM32CubeMX和HAL庫(kù)》新書(shū)發(fā)布!
Hash哈希競(jìng)猜游戲系統(tǒng)開(kāi)發(fā)方案(邏輯分析)詳情
評(píng)論