網(wǎng)友評分:
9.7分
Hashing(加密哈希生成程序)是一款功能強(qiáng)大的加密哈希生成工具。你是不是在找占空間小的加密哈希生成軟件?那就來下載Hashing免費(fèi)版使用。它支持MD5、SHA-1、SHA-224、SHA-256、SHA-385、SHA-512。您可以在短時(shí)間里處理您想要的文件數(shù)量。您也可以手工輸入十六進(jìn)制。
哈希值,即HASH值,是通過對文件內(nèi)容進(jìn)行加密運(yùn)算得到的一組二進(jìn)制值,主要用途是用于文件校驗(yàn)或簽名。
不同的文件(哪怕細(xì)微的差異)得到的哈希值均不相同,因此哈希值可做為文件唯一性判別。
對于普通上網(wǎng)者而言,可以通過對下載后的文件進(jìn)行哈希值較驗(yàn),以判斷該文件是否在發(fā)布后被人修改過,保證下載的正確性。
類似的還有md5校驗(yàn)。
隨機(jī)生成編輯
隨機(jī)數(shù)生成是許多加密操作不可分割的組成部分。例如,加密密鑰需要盡可能地隨機(jī),以便使生成的密鑰很難再現(xiàn)。加密隨機(jī)數(shù)生成器必須生成無法以計(jì)算方法推算出(低于 p < .05 的概率)的輸出;即,任何推算下一個(gè)輸出位的方法不得比隨機(jī)猜測具有更高的成功概率。.NET Framework 中的類使用隨機(jī)數(shù)生成器生成加密密鑰。
RNGCrypto Service Provider 是隨機(jī)數(shù)生成器算法的實(shí)現(xiàn)。
散列函數(shù)的性質(zhì)編輯
所有散列函數(shù)都有如下一個(gè)基本特性:如果兩個(gè)散列值是不相同的(根據(jù)同一函數(shù)),那么這兩個(gè)散列值的原始輸入也是不相同的。這個(gè)特性是散列函數(shù)具有確定性的結(jié)果,具有這種性質(zhì)的散列函數(shù)稱為單向散列函數(shù)。但另一方面,散列函數(shù)的輸入和輸出不是唯一對應(yīng)關(guān)系的,如果兩個(gè)散列值相同,兩個(gè)輸入值很可能是相同的,但也可能不同,這種情況稱為“散列碰撞(collision)”,這通常是兩個(gè)不同長度的輸入值,刻意計(jì)算出相同的輸出值。輸入一些數(shù)據(jù)計(jì)算出散列值,然后部分改變輸入值,一個(gè)具有強(qiáng)混淆特性的散列函數(shù)會產(chǎn)生一個(gè)完全不同的散列值。
典型的散列函數(shù)都有非常大的定義域,比如SHA-2最高接受(2-1)/8長度的字節(jié)字符串。同時(shí)散列函數(shù)一定有著有限的值域,比如固定長度的比特串。在某些情況下,散列函數(shù)可以設(shè)計(jì)成具有相同大小的定義域和值域間的單射。散列函數(shù)必須具有不可逆性。
散列函數(shù)的應(yīng)用編輯
由于散列函數(shù)的應(yīng)用的多樣性,它們經(jīng)常是專為某一應(yīng)用而設(shè)計(jì)的。例如,加密散列函數(shù)假設(shè)存在一個(gè)要找到具有相同散列值的原始輸入的敵人。一個(gè)設(shè)計(jì)優(yōu)秀的加密散列函數(shù)是一個(gè)“單向”操作:對于給定的散列值,沒有實(shí)用的方法可以計(jì)算出一個(gè)原始輸入,也就是說很難偽造。為加密散列為目的設(shè)計(jì)的函數(shù),如SHA-2,被廣泛的用作檢驗(yàn)散列函數(shù)。這樣軟件下載的時(shí)候,就會對照驗(yàn)證代碼之后才下載正確的文件部分。此代碼有可能因?yàn)榄h(huán)境因素的變化,如機(jī)器配置或者IP地址的改變而有變動。以保證源文件的安全性。
錯(cuò)誤監(jiān)測和修復(fù)函數(shù)主要用于辨別數(shù)據(jù)被隨機(jī)的過程所擾亂的事例。當(dāng)散列函數(shù)被用于校驗(yàn)和的時(shí)候,可以用相對較短(但不能短于某個(gè)安全參數(shù), 通常不能短于160位)的散列值來驗(yàn)證任意長度的數(shù)據(jù)是否被更改過。
加密
主條目:加密散列函數(shù)
一個(gè)典型的加密單向函數(shù)是“非對稱”的,并且由一個(gè)高效的散列函數(shù)構(gòu)成;一個(gè)典型的加密暗門函數(shù)是“對稱”的,并且由一個(gè)高效的隨機(jī)函數(shù)構(gòu)成。
確保傳遞真實(shí)的信息
消息或數(shù)據(jù)的接受者確認(rèn)消息是否被篡改的性質(zhì)叫數(shù)據(jù)的真實(shí)性,也稱為完整性。發(fā)信人通過將原消息和散列值一起發(fā)送,可以保證真實(shí)性。
散列表
主條目:散列表
散列表是散列函數(shù)的一個(gè)主要應(yīng)用,使用散列表能夠快速的按照關(guān)鍵字查找數(shù)據(jù)記錄。(注意:關(guān)鍵字不是像在加密中所使用的那樣是秘密的,但它們都是用來“解鎖”或者訪問數(shù)據(jù)的。)例如,在英語字典中的關(guān)鍵字是英文單詞,和它們相關(guān)的記錄包含這些單詞的定義。在這種情況下,散列函數(shù)必須把按照字母順序排列的字符串映射到為散列表的內(nèi)部數(shù)組所創(chuàng)建的索引上。
散列表散列函數(shù)的幾乎不可能/不切實(shí)際的理想是把每個(gè)關(guān)鍵字映射到唯一的索引上(參考完美散列),因?yàn)檫@樣能夠保證直接訪問表中的每一個(gè)數(shù)據(jù)。
一個(gè)好的散列函數(shù)(包括大多數(shù)加密散列函數(shù))具有均勻的真正隨機(jī)輸出,因而平均只需要一兩次探測(依賴于裝填因子)就能找到目標(biāo)。同樣重要的是,隨機(jī)散列函數(shù)不太會出現(xiàn)非常高的沖突率。但是,少量的可以估計(jì)的沖突在實(shí)際狀況下是不可避免的(參考生日悖論或鴿洞原理)。
在很多情況下,heuristic散列函數(shù)所產(chǎn)生的沖突比隨機(jī)散列函數(shù)少的多。Heuristic函數(shù)利用了相似關(guān)鍵字的相似性。例如,可以設(shè)計(jì)一個(gè)heuristic函數(shù)使得像FILE0000.CHK,FILE0001.CHK,FILE0002.CHK,等等這樣的文件名映射到表的連續(xù)指針上,也就是說這樣的序列不會發(fā)生沖突。相比之下,對于一組好的關(guān)鍵字性能出色的隨機(jī)散列函數(shù),對于一組壞的關(guān)鍵字經(jīng)常性能很差,這種壞的關(guān)鍵字會自然產(chǎn)生而不僅僅在攻擊中才出現(xiàn)。性能不佳的散列函數(shù)表意味著查找操作會退化為費(fèi)時(shí)的線性搜索。
錯(cuò)誤校正
主條目:錯(cuò)誤校正與檢測
使用一個(gè)散列函數(shù)可以很直觀的檢測出數(shù)據(jù)在傳輸時(shí)發(fā)生的錯(cuò)誤。在數(shù)據(jù)的發(fā)送方,對將要發(fā)送的數(shù)據(jù)應(yīng)用散列函數(shù),并將計(jì)算的結(jié)果同原始數(shù)據(jù)一同發(fā)送。在數(shù)據(jù)的接收方,同樣的散列函數(shù)被再一次應(yīng)用到接收到的數(shù)據(jù)上,如果兩次散列函數(shù)計(jì)算出來的結(jié)果不一致,那么就說明數(shù)據(jù)在傳輸?shù)倪^程中某些地方有錯(cuò)誤了。這就叫做冗余校驗(yàn)。
校正錯(cuò)誤時(shí),至少會對可能出現(xiàn)的擾動大致假定一個(gè)分布模式。對于一個(gè)信息串的微擾可以被分為兩類,大的(不可能的)錯(cuò)誤和小的(可能的)錯(cuò)誤。我們對于第二類錯(cuò)誤重新定義如下,假如給定H(x)和x+s,那么只要s足夠小,我們就能有效的計(jì)算出x。那樣的散列函數(shù)被稱作錯(cuò)誤校正編碼。這些錯(cuò)誤校正編碼有兩個(gè)重要的分類:循環(huán)冗余校驗(yàn)和里德-所羅門碼。
語音識別
對于像從一個(gè)已知列表中匹配一個(gè)MP3文件這樣的應(yīng)用,一種可能的方案是使用傳統(tǒng)的散列函數(shù)——例如MD5,但是這種方案會對時(shí)間平移、CD讀取錯(cuò)誤、不同的音頻壓縮算法或者音量調(diào)整的實(shí)現(xiàn)機(jī)制等情況非常敏感。使用一些類似于MD5的方法有利于迅速找到那些嚴(yán)格相同(從音頻文件的二進(jìn)制數(shù)據(jù)來看)的音頻文件,但是要找到全部相同(從音頻文件的內(nèi)容來看)的音頻文件就需要使用其他更高級的算法了。
那些并不緊隨IT工業(yè)潮流的人往往能反其道而行之,對于那些微小差異足夠健壯的散列函數(shù)確實(shí)存在?,F(xiàn)存的絕大多數(shù)散列算法都是不夠健壯的,但是有少數(shù)散列算法能夠達(dá)到辨別從嘈雜房間里的揚(yáng)聲器里播放出來的音樂的健壯性。有一個(gè)實(shí)際的例子是Shazam服務(wù)。用戶可以用手機(jī)打開其app,并將話筒靠近用于播放音樂的揚(yáng)聲器。該項(xiàng)服務(wù)會分析正在播放的音樂,并將它于存儲在數(shù)據(jù)庫中的已知的散列值進(jìn)行比較。用戶就能夠收到被識別的音樂的曲名。
Rabin-Karp字符串搜索算法
Rabin-Karp字符串搜索算法是一個(gè)相對快速的字符串搜索算法,它所需要的平均搜索時(shí)間是O(n).這個(gè)算法是創(chuàng)建在使用散列來比較字符串的基礎(chǔ)上的。
應(yīng)用編輯
HASH是根據(jù)文件的內(nèi)容的數(shù)據(jù)通過邏輯運(yùn)算得到的數(shù)值, 不同的文件(即使是相同的文件名)得到的HASH值是不同的, 所以HASH值就成了每一個(gè)文件在電驢(eMule)里的身份證.
不同HASH值的文件在電驢(eMule)里被認(rèn)為是不同的文件,相同的HASH值的文件的內(nèi)容肯定是完全相同(即使文件名不同).
HASH值還有文件校驗(yàn)的功能,相當(dāng)于文件的校驗(yàn)碼. 所以還可以用來檢查文件下載是否正確(所以電驢(eMule)下載完畢時(shí),都會再HASH文件一遍, 檢查文件是否出錯(cuò))。
標(biāo)簽: 哈希
關(guān)于本站|下載幫助|下載聲明|軟件發(fā)布|聯(lián)系我們
Copyright ? 2005-2024 m.daaijiaoyu.cn.All rights reserved.
浙ICP備2024132706號-1 浙公網(wǎng)安備33038102330474號