當前位置:首頁 » 文件管理 » 可以用於文件哈希計算的演算法包含
擴展閱讀
怎樣把表格做成棋盤 2025-06-10 12:49:55
一款游戲半年就可以玩好 2025-06-10 12:46:43
不要網可以練題的軟體 2025-06-10 12:40:23

可以用於文件哈希計算的演算法包含

發布時間: 2023-05-28 13:40:25

Ⅰ 常見的哈希演算法有哪些

1、RSHash
unsigned int RSHash(const std::string& str)
{
unsigned int b = 378551;
unsigned int a = 63689;
unsigned int hash = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = hash * a + str[i];
a = a * b;
}

return hash;
}

2、JSHash
unsigned int JSHash(const std::string& str)
{
unsigned int hash = 1315423911;
for(std::size_t i = 0; i < str.length(); i++)
{
hash ^= ((hash << 5) + str[i] + (hash >> 2));
}
return hash;
}

3、PJWHash
unsigned int PJWHash(const std::string& str)
{
unsigned int BitsInUnsignedInt = (unsigned int)(sizeof(unsigned int) * 8);
unsigned int ThreeQuarters = (unsigned int)((BitsInUnsignedInt * 3) / 4);
unsigned int OneEighth = (unsigned int)(BitsInUnsignedInt / 8);
unsigned int HighBits = (unsigned int)(0xFFFFFFFF) << (BitsInUnsignedInt - OneEighth);
unsigned int hash = 0;
unsigned int test = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash << OneEighth) + str[i];

if((test = hash & HighBits) != 0)
{
hash = (( hash ^ (test >> ThreeQuarters)) & (~HighBits));
}
}
return hash;
}

4、ELFHash
unsigned int ELFHash(const std::string& str)
{
unsigned int hash = 0;
unsigned int x = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash << 4) + str[i];
if((x = hash & 0xF0000000L) != 0)
{
hash ^= (x >> 24);
}
hash &= ~x;
}

return hash;
}

5、BKDRHash
unsigned int BKDRHash(const std::string& str)
{
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0;

for(std::size_t i = 0; i < str.length(); i++)
{
hash = (hash * seed) + str[i];
}
return hash;
}

哈希演算法將任汪慶意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨後的哪稿哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,所以數據的哈希值可李陵孝以檢驗數據的完整性。一般用於快速查找和加密演算法。

Ⅱ 哈希演算法的計算方法

用來產生一些數據片段(例如消息或會話項)的哈希老纖值的演算法。使用好的哈希演算法,在輸入數據中所做的更改就可以更改結果哈希值中的所有位;因此,哈希對於檢測數據對象(例如消息)中的修改很有用。此外,好的哈希演算法使得構造兩個相互獨立且具有相同哈希的輸入不能通過計算方法實現。典型的哈希演算法包括 MD2、MD4、MD5 和 SHA-1。哈希演算法也稱為「哈希函數」。
另請參閱: 基於哈希的消息驗證模式 (HMAC), MD2, MD4, MD5,消息摘要, 安全哈希演算法 (SHA-1)
MD5一種符合工業標準的單向 128 位哈希方案,由 RSA Data Security, Inc. 開發。 各種「點對點協議(PPP)」供應商都將它用於加密的身份嫌坦驗證。哈希方案是一種以結果唯一並且不能返回到其原始格式的方式來轉換數據(如密碼)的方法。質詢握手身份驗證協議(CHAP) 使用侍者仿質詢響應並在響應時使用單向 MD5哈希法。按照此方式,您無須通過網路發送密碼就可以向伺服器證明您知道密碼。
質詢握手身份驗證協議(CHAP)「點對點協議(PPP)」連接的一種質詢響應驗證協議,在 RFC 1994 中有所描述。 該協議使用業界標准 MD5哈希演算法來哈希質詢串(由身份驗證伺服器所發布)和響應中的用戶密碼的組合。
點對點協議
用點對點鏈接來傳送多協議數據報的行業標准協議套件。RFC 1661 中有關於 PPP 的文檔。
另請參閱: 壓縮控制協議 (CCP),遠程訪問,徵求意見文檔 (RFC),傳輸控制協議/Internet 協議 (TCP/IP),自主隧道。

Ⅲ hash函數的主要應用有哪些

Hash演算法在信息安全方面的應用主要體現在以下的3個方面:
1)文件校驗
我們比較熟悉的校驗演算法有奇偶瞎散校驗和CRC校驗,這2種校驗並沒有抗數據篡改的能力,它們一定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。
MD5 Hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)演算法,不少Unix系統有提供計算md5 checksum的命令。
2)數字簽名
Hash 演算法也是現代密碼體系中的一個重要組成部分。由於非櫻凳對稱演算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數脊神旅字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
3)鑒權協議
如下的鑒權協議又被稱作"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。