view plaincopy to clipboardprint?
01.function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler;? ?
02.asm??
03.? ?? ???PUSH??EBX;? ?
04.? ?? ???XOR? ?EBX, EBX? ?
05.? ?? ???MOV? ?ECX, EAX? ?
06.? ?? ???XOR? ?EAX, EAX? ?
07.@LOOP:? ?
08.? ?? ???TEST??EDX, EDX? ?
09.? ?? ???JZ? ? @EXIT? ?
10.? ?? ???MOV? ?BL,??[ECX]? ?
11.? ?? ???IMUL??EAX, 131??
12.? ?? ???ADD? ?EAX, EBX? ?
13.? ?? ???INC? ?ECX? ?
14.? ?? ???DEC? ?EDX? ?
15.? ?? ???JMP? ?@LOOP? ?
16.@EXIT:? ?
17.? ?? ???POP? ?EBX? ?
18.//----------------------------? ?
19.// Pascal:? ?
20.//? ?
21.//??Result := 0;? ?
22.//??while count > 0 do? ?
23.//??begin? ?
24.//? ? Result := (Result * 131) + PByte(buf)^;? ?
25.//? ? Inc(PByte(buf));? ?
26.//? ? Dec(count);? ?
27.//??end;? ?
28.end;? ?
29.function DJBHash(buf: Pointer; count: Integer) : Cardinal; assembler;? ?
30.asm??
31.? ?? ???PUSH??EDI? ?
32.? ?? ???PUSH??EBX? ?
33.? ?? ???XOR? ?EBX, EBX? ?
34.? ?? ???MOV? ?ECX, EAX? ?
35.? ?? ???MOV? ?EAX, 5381??
36.@LOOP:? ?
37.? ?? ???TEST??EDX, EDX? ?
38.? ?? ???JZ? ? @EXIT? ?
39.? ?? ???MOV? ?EDI, EAX? ?
40.? ?? ???SHL? ?EDI, 5??
41.? ?? ???ADD? ?EAX, EDI? ?
42.? ?? ???MOV? ?BL, [ECX]? ?
43.? ?? ???ADD? ?EAX, EBX? ?
44.? ?? ???INC? ?ECX? ?
45.? ?? ???DEC? ?EDX? ?
46.? ?? ???JMP? ?@LOOP? ?
47.@EXIT:? ?
48.? ?? ???POP? ?EBX? ?
49.? ?? ???POP? ?EDI? ?
50.//----------------------------? ?
51.// Pascal:? ?
52.//? ?
53.//??Result := 5381;? ?
54.//??while count > 0 do? ?
55.//??begin? ?
56.//? ? Result := ((Result shl 5) + Result) + PByte(buf)^;? ?
57.//? ? Inc(PByte(buf));? ?
58.//? ? Dec(count);? ?
59.//??end;? ?
60.end;??
function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler;
asm
? ?? ???PUSH??EBX;
? ?? ???XOR? ?EBX, EBX
? ?? ???MOV? ?ECX, EAX
? ?? ???XOR? ?EAX, EAX
@LOOP:
? ?? ???TEST??EDX, EDX
? ?? ???JZ? ? @EXIT
? ?? ???MOV? ?BL,??[ECX]
? ?? ???IMUL??EAX, 131
? ?? ???ADD? ?EAX, EBX
? ?? ???INC? ?ECX
? ?? ???DEC? ?EDX
? ?? ???JMP? ?@LOOP
@EXIT:
? ?? ???POP? ?EBX
//----------------------------
// Pascal:
//
//??Result := 0;
//??while count > 0 do
//??begin
//? ? Result := (Result * 131) + PByte(buf)^;
//? ? Inc(PByte(buf));
//? ? Dec(count);
//??end;
end;
function DJBHash(buf: Pointer; count: Integer) : Cardinal; assembler;
asm
? ?? ???PUSH??EDI
? ?? ???PUSH??EBX
? ?? ???XOR? ?EBX, EBX
? ?? ???MOV? ?ECX, EAX
? ?? ???MOV? ?EAX, 5381
@LOOP:
? ?? ???TEST??EDX, EDX
? ?? ???JZ? ? @EXIT
? ?? ???MOV? ?EDI, EAX
? ?? ???SHL? ?EDI, 5
? ?? ???ADD? ?EAX, EDI
? ?? ???MOV? ?BL, [ECX]
? ?? ???ADD? ?EAX, EBX
? ?? ???INC? ?ECX
? ?? ???DEC? ?EDX
? ?? ???JMP? ?@LOOP
@EXIT:
? ?? ???POP? ?EBX
? ?? ???POP? ?EDI
//----------------------------
// Pascal:
//
//??Result := 5381;
//??while count > 0 do
//??begin
//? ? Result := ((Result shl 5) + Result) + PByte(buf)^;
//? ? Inc(PByte(buf));
//? ? Dec(count);
//??end;
end;?
Delphi:高效的哈希函數
- delphi(38021)
- 哈希函數(9382)
相關推薦
使用Delphi 7.0開發軟件和Moxa庫函數實現同步卡調試器的設計
根據這一需求,作者使用Delphi 7.0開發這款軟件。首先定制界面,該部分較簡單,略之。關鍵部分如下:設備初始化及I/O,十六進制顯示,十六進制輸入。為了做到通用性,作者重新改寫了Moxa的庫函數,精簡為如下幾條函數:
2020-07-28 08:56:563526
Delphi 串口通信技術分享
一、總目錄如下所示: 資料1.Delphi安裝源文件(總共2個文件,大小:502MB) 資料2.Delphi串口通信源碼(總共242個源碼,大小:151MB) 資料3.Delphi串口通信
2021-07-01 07:54:28
Delphi串口通信技術
如有需要可以聯系本人,Delphi串口通信技術資料:一、總目錄如下所示資料1.Delphi安裝源文件(總共2個文件,大小:502MB)資料2.Delphi串口通信源碼(總共242個源碼,大小
2021-07-01 12:16:47
有人知道低成本的8位芯片組做BigShink哈希函數嗎
大家好,我想知道有沒有人知道一個低成本的8位芯片組,可能是PIC18F家族或PIC10F等的任何一個,可以用來做BigShink哈希函數嗎?非常感謝您的幫助。 以上來自于百度翻譯 以下為原文
2018-12-29 16:30:34
delphi語音控件
delphi語音控件,完美acm語音delphi開發控件: znACM ver5.1完美的封裝了微軟的 acm 語音相關的函數,使用簡單(10分鐘學會使用),可控制性強,容易擴展。從使用角度出發,切合程序制
2008-10-06 17:33:45102
用Delphi做數據庫開發
用Delphi做數據庫開發:實驗三 用Delphi做數據庫開發一、實驗目的通過使用Delphi中BDE連接SQL數據庫,掌握Delphi環境中數據庫操作的最基本的方法和Delphi下數據庫應用程序的開發方
2009-05-10 11:05:4443
Delphi教程之檢測NumLock、Insert、CapsLo
Delphi教程之檢測NumLock、Insert、CapsLock、ScrollLock鍵的狀態,很好的Delphi資料,快來下載學習吧
2016-04-11 16:09:418
基于分段哈希碼的倒排索引樹結構
處理,對每段哈希碼維護一個倒排索引樹結構,并結合高效的布隆過濾器構建哈希索引結構。為了進一步提高檢索準確性,設計了一種準確的排序融合算法,對多個哈希算法的排序結果分別構建加權無向圖,采用PageRank的思想對基于多
2017-11-28 17:40:150
基于低密度生成矩陣和哈希函數的安全簽密方案
基于編碼的密碼系統具備抵抗量子計算的天然優勢。針對傳統的基于Goppa碼構造的密碼方案存在密文擴展率大和密鑰量大的問題,利用低密度生成矩陣( LDGM)碼和哈希函數構造了一個可證明安全的簽密方案
2017-12-12 11:06:470
Delphi資源生成器Delphi Resource Generate免費下載
Delphi Resource Generate用來生成我們經常使用的資源文件。省去了去使用命令brcc32.exe的麻煩!提高效率很重要!
2017-12-12 14:54:281
Delphi 7編程軟件官方版免費下載
Delphi7包含了Delphi基本組件和ADO組件,實現了Delphi的基本功能,Delphi 7只備臨時之需,開發小程序還是沒有問題的。
2017-12-12 16:12:370
解析加密貨幣中最常用的四種加密哈希函數的特性和差異
比特幣采礦涉及礦工解決復雜的計算難題,以找到一個塊,然后將其附加到比特幣區塊鏈。就是我們經常稱的工作量證明(proof-of-work),它涉及SHA-256哈希函數的計算。
2018-05-11 16:30:597908
哈希表是什么?哈希表數據結構詳細資料分析
哈希表也稱為散列表,是根據關鍵字值(key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵字值映射到一個位置來訪問記錄,以加快查找的速度。這個映射函數稱為哈希函數(也稱為散列函數),映射過程稱為哈希化,存放記錄的數組叫做散列表。比如我們可以用下面的方法將關鍵字映射成數組的下標:
2018-09-24 10:25:009655
哈希算法的基本含義與分類
根據維基百科的定義,哈希函數要做的事情是給一個任意大小的數據生成出一個固定長度的數據,作為它的映射。所謂映射就是一一對應。一個可靠的哈希算法要滿足三點。
2018-12-26 11:20:563641
理解數字簽名和加密通信等技術的關鍵算法哈希算法的介紹
哈希是密碼學的基礎,理解哈希是理解數字簽名和加密通信等技術的必要前提。
哈希,英文是 hash ,本來意思是”切碎并攪拌“,有一種食物就叫 Hash ,就是把食材切碎并攪拌一下做成的。哈希函數的運算結果就是哈希值,通常簡稱為哈希。哈希函數有時候也翻譯做散列函數。
2019-01-13 09:20:073218
以太坊哈希數字Keccak介紹
這里可能會出現各種各樣的誤解。在國家標準化技術公司(NIST)宣布將進行哈希值工作競賽,以制定新的哈希值標準SHA-3之前,以太網絡似乎已經啟動了這一方法。后來,Keccak被選為真正的贏家。目前
2019-01-18 11:06:283594
什么是哈希算法它的作用是什么
,就是這個哈希函數,是將任意長度的數據,映射在有限長度的域上。總體而言,哈希函數用于,將消息或數據壓縮,生成數據摘要,最終使數據量變小,并擁有固定格式。
2019-03-08 11:21:0118360
哈希函數的特點及應用介紹
換句話說,哈希函數的回傳結果(稱之為hash value),是一個長度一致,但是數據內容卻是獨一無二(unique)的數值。所以,如果看到兩個完全不一樣的”hash value”,我們就可以推斷
2019-03-19 15:25:3214730
比特幣中的哈希函數是如何工作的
哈希函數是一個只能在一個方向上計算的函數,這保證了區塊鏈世界的清晰性和安全性。這也意味著,如果我們輸入一個函數,我們就可以計算輸出,但是只給輸出卻不可能逆向計算出輸入。(在這個意義上,這一特性就像
2019-10-08 11:46:522895
哈希函數的特性以及比特幣挖礦的技術原理解析
哈希函數不用知道輸入信息代表的是什么意思,也無所謂信息的長度有多長,只要輸入hash函數出來的都是固定長度的比特值。比如非常有名的SHA256 哈希函數,輸入任何值出來的都是256比特的0和1. 輸入一本《三國演義》或者僅僅輸入一個字母a,出來的都是256位比特長度的數據。
2019-10-12 10:49:253481
區塊鏈技術中的哈希函數解析
哈希函數是一種從任何一種數據中創建小的數字指紋的方法。哈希函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。該函數將數據打亂混合,重新創建一個叫做散列值的指紋。
2019-11-27 11:06:371551
什么是哈希值該如何在區塊鏈中應用
哈希值是將任意長度的輸入字符串轉換為密碼并進行固定輸出的過程。哈希值不是一個“密碼”,我們不能通過解密哈希來檢索原始數據,它是一個單向的加密函數。
2020-02-11 17:25:004329
哈希函數的概念及結構解析
簡言之,就是設定某一固定函數(hashFunc),通過此函數來使插入元素的值與元素位置相對應,往后我們需要查找此元素時就可以通過此函數(hashFunc)找到該值。
2020-03-11 10:00:079540
哈希表是什么?為什么需要使用哈希表
我們在這篇文章將要學習最有用的數據結構之一—哈希表,哈希表的英文叫 Hash Table,也可以稱為散列表或者 Hash 表。
2020-04-06 13:50:0010956
區塊鏈科普:哈希函數算法
哈希值和哈希函數的概念是初次入門區塊鏈的人常聽到的兩個關鍵詞,而且似乎對安全性來說特別關鍵。(實際上也確實是。)對于像比特幣和以太坊這樣由成千上萬的節點通過 P2P 方法組成的去中心化網絡來說
2020-06-28 09:25:524260
哈希算法到底是什么?它又是如何運行的?
哈希就是將不同的輸入映射成獨一無二的、固定長度的值(又稱 "哈希值"),是最常見的軟件運算之一。很多網絡服務會使用哈希函數,產生一個 token,標識用戶的身份和權限。
2020-06-28 11:02:102981
HMACMD5鍵控哈希算法的程序和工程文件免費下載
HMACMD5 是從 MD5 哈希函數構造的一種鍵控哈希算法,被用作基于哈希的消息驗證代碼 (HMAC)。此 HMAC 進程將密鑰與消息數據混合,使用哈希函數對混合結果進行哈希計算,將所得哈希值與該密鑰混合,然后再次應用哈希函數。輸出的哈希值長度為 128 位。
2020-07-06 08:00:001
計算機系統中哈希表的優化
導讀:本文從哈希表傳統設計與解決思路入手,深入淺出地引出新的設計思路:從盡量規避哈希沖突,轉向了利?合適的哈希沖突概率來優化計算和存儲效率。新的哈希表設計表明 SIMD 指令的并?化處理能?的有效
2021-03-02 14:10:501841
改進的格上可編程哈希函數環簽名模型
針對傳統格上環簽名方案的簽名和密鑰長度過長的問題,建立一種改進的格上可編程哈希函數環簽名模型。利用MPⅠ2陷門函數生成簽名密鑰,通過可編程哈希函數模擬隨機預言機的部分可編程性質,運用格上的分區證明
2021-03-18 11:20:344
基于異構哈希網絡的跨模態人臉檢索方法探究分析
函數三個部分,首先圖像和視頻分支分別將人臉圖像和人臉視頻映射到一個公共空間,然后在公共空間學習非線性哈希函數。網絡的訓練使用了三種損失函數: Fisher損失、 softmax損失和三元排序損失( triplet rankiloss),其中的 Fisher損
2021-03-31 09:29:0018
一種基于異構哈希網絡的跨模態人臉檢索方法
函數三個部分,首先圖像和視頻分支分別將人臉圖像和人臉視頻映射到一個公共空間,然后在公共空間中學習非線性哈希函數。網絡的訓練使用了三種損失函數: Fisher損失、 softmax損失和三元排序損失( triplet rankingoss),其中的 Fi
2021-04-28 16:24:405
基于可編程哈希函數的HIBE加密方案
在標準模型下,格上基于分級身份的加密(HBE)方案的陷門生成計算復雜度較高。針對該問題,提出種基于可編程哈希函數的HBE加密方案。利用MPI2陷門函數生成陷門,由可編程哈希函數得到主公鑰、主私鑰以及
2021-06-03 15:57:5011
區塊哈希游戲開發邏輯(上鏈)哈希競猜游戲開發
什么是哈希/ Hash 哈希又稱作“散列”,是一種數學計算機程序,它接收任何一組任意長度的輸入信息,通過哈希算法變換成固定長度的數據指紋輸出形式,如字母和數字的組合,該輸出就是“哈希值”。 總體而言
2022-06-02 11:39:05993
哈希算法是什么,哈希游戲系統開發方案
什么是哈希/Hash 哈希又稱作“散列”,是一種數學計算機程序,它接收任何一組任意長度的輸入信息,通過哈希算法變換成固定長度的數據指紋輸出形式,如字母和數字的組合,該輸出就是“哈希值”。 總體而言
2022-06-14 09:14:51792
哈希是什么,常見的哈希算法有哪些
什么是哈希? 哈希又稱作“散列”,是一種數學計算機程序,它接收任何一組任意長度的輸入信息,通過哈希算法變換成固定長度的數據指紋輸出形式,如字母和數字的組合,該輸出就是“哈希值”。總體而言,哈希算法
2022-06-23 14:57:066251
區塊哈希競猜游戲系統開發加密哈希算法概述
景的不同,可將哈希算法分為加密哈希與非加密哈希。 ?概述 ?加密哈希被認為是單向函數,也就是說極難由散列函數輸出的結果,回推輸入的數據是什么。加密哈希函數的輸入數據,通常被稱為消息(message),而它的輸出結果通常被稱為摘要(digest)。一個理想的
2022-06-24 09:51:38820
哈希算法函數的定義描述及其特征介紹
哈希的本質是一個采用哈希算法的數學函數,它被廣泛應用于區塊鏈中構建區塊以及確認交易信息的完整性上。 什么是哈希算法?哈希算法是密碼學中的一個重要算法,哈希的英文為Hash。 哈希算法有一個輸入
2022-06-28 21:02:025676
usdt區塊遨游的函數單雙和函數
簡單來說,哈希算法就是一種特殊的函數,不論輸入多長的一串字符,只要通過這個函數都可以得到一個固定長度的輸出值,這就好像身份證號碼一樣,永遠都是十八位而且全國唯一。哈希算法的輸出值就叫做哈希值。 比如
2022-08-10 15:46:281358
Delphi數據訪問組件方案
適用于任何數據庫的更快、更可靠的數據連接解決方案 Delphi 數據訪問組件 Delphi數據訪問組件允許在Windows,Linux,macOS,iOS和Android
2023-06-26 10:02:43419
Linux內核分析 端口哈希桶
端口哈希桶 在inet_csk_get_port函數中的變量聲名中有如下幾個結構體: struct inet_hashinfo * hinfo = sk- >sk_prot- >h.hashinfo
2023-07-31 11:03:23388
評論
查看更多