1樓:饒其稅又柔
一般的hash函式復都需要盡量滿足以下三點性制質:
1.抗原像:已知y屬於y,要找出x屬於x,使得h(x)=y是困難的;
2.抗第二原像(弱抗碰撞):已知x屬於x,找出x'屬於x,使得h(x')=h(x)是困難的;
3.抗碰撞(強抗碰撞):找出x,x'屬於x,使得h(x)=h(x')是困難的;
密碼學上的hash函式應滿足哪些基本要求?
2樓:匿名使用者
一般的hash函式都需要盡量滿足以下三點性質:
1.抗原像:已知y屬於y,要找出x屬於x,使得h(x)=y是困難的;
2.抗第二原像(弱抗碰撞):已知x屬於x, 找出x'屬於x,使得h(x')=h(x)是困難的;
3.抗碰撞(強抗碰撞):找出x,x'屬於x,使得h(x)=h(x')是困難的;
密碼學hash函式的安全性要求是有哪些?
3樓:手指の方向
1、已知雜湊函式的輸出,要求它的輸入是困難的,即已知c=hash(m),求m是困難的。這表明函式應該具有單向性。
2、已知m,計算hash(m)是容易的。這表明函式應該具有快速性。
3、已知,構造m2使hash(m2)=c1是困難的。這表明函式應該具有抗碰撞性。
4、c=hash(m),c的每一位元都與m的每一位元有關,並有高度敏感性。即每改變m的一位元,都將對c產生明顯影響。這表明函式應該具有雪崩性。
5、作為一種數字簽名,還要求雜湊函式除了資訊m自身之外,應該基於發信方的秘密資訊對資訊m進行確認。
6、接受的輸入m資料沒有長度限制;對輸入任何長度的m資料能夠生成該輸入報文固定長度的輸出。
最理想的hash函式應該具有什麼特徵
4樓:匿名使用者
hash函式 hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,而不可能從雜湊值來唯一的確定輸入值。
簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。
hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值. 也可以說,hash就是找到一種資料內容和資料存放位址之間的對映關係
了解了hash基本定義,就不能不提到一些著名的hash演算法,md5 和 sha1 可以說是目前應用最廣泛的hash演算法,而它們都是以 md4 為基礎設計的。那麼他們都是什麼意思呢?
這裡簡單說一下:
1) md4
md4(rfc 1320)是 mit 的 ronald l. rivest 在 1990 年設計的,md 是 message digest 的縮寫。它適用在32位字長的處理器上用高速軟體實現--它是基於 32 位運算元的位操作來實現的。
2) md5
md5(rfc 1321)是 rivest 於2023年對md4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 md4 相同。md5比md4來得複雜,並且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好
3) sha1 及其他
sha1是由nist nsa設計為同dsa一起使用的,它對長度小於264的輸入,產生長度為160bit的雜湊值,因此抗窮舉(brute-force)性更好。sha-1 設計時基於和md4相同原理,並且模仿了該演算法。
那麼這些hash演算法到底有什麼用呢?
hash演算法在資訊保安方面的應用主要體現在以下的3個方面:
1) 檔案校驗
我們比較熟悉的校驗演算法有奇偶校驗和crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。
md5 hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5 checksum的命令。
2) 數字簽名
hash 演算法也是現代密碼體系中的乙個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了乙個重要的角色。 對 hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。
而且這樣的協議還有其他的優點。
3) 鑑權協議
如下的鑑權協議又被稱作"挑戰--認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。
hash函式在程式設計中的實現
// 說明:hash函式(即雜湊函式)在程式設計中的應用目標 ------ 把乙個物件通過某種轉換機制對應到乙個
// size_t型別(即unsigned long)的整型值。
// 而應用hash函式的領域主要是 hash表(應用非常廣)、密碼等領域。
// 實現說明:
// (1)、這裡使用了函式物件以及泛型技術,使得對所有型別的物件(關鍵字)都適用。
// (2)、常用型別有對應的偏特化,比如string、char*、各種整形等。
// (3)、版本可擴充套件,如果你對某種型別有特殊的需要,可以在後面實現專門化。
// (4)、以下實現一般放在標頭檔案中,任何包含它的都可使用hash函式物件。
#include
using std::string;
inline size_t hash_str( const char* s )
template
struct hash
;// 一般的物件,比如:vector< queue>的物件,需要強制轉化
template < class key >
size_t hash::operator () ( const key& k ) const
return res;
}// 偏特化
template<>
size_t hash< string >::operator () ( const string& str ) const
typedef char* pchar;
template<>
size_t hash::operator () ( const pchar& s ) const
typedef const char* pcchar;
template<>
size_t hash::operator () ( const pcchar& s ) const
template<> size_t hash::operator () ( const char& x ) const
template<> size_t hash::operator () ( const unsigned char& x ) const
template<> size_t hash::operator () ( const signed char& x ) const
template<> size_t hash::operator () ( const short& x ) const
template<> size_t hash::operator () ( const unsigned short& x ) const
template<> size_t hash::operator () ( const int& x ) const
template<> size_t hash::operator () ( const unsigned int& x ) const
template<> size_t hash::operator () ( const long& x ) const
template<> size_t hash::operator () ( const unsigned long& x ) const
// 使用說明:
// // (1)、使用時首先由於是泛型,所以要加上關鍵字型別。
// // (2)、其次要有乙個函式物件,可以臨時、區域性、全域性的,只要在作用域就可以。
// // (3)、應用函式物件作用於對應型別的物件。
//----------------------- hash函式使用舉例 -------------------------
#include
#include
#include
using namespace std;
int main()
什麼樣的hash函式是安全的
5樓:春曖曖開花
:hash函式: hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。
乙個安全的雜湊演算法需要具備哪些屬性
6樓:匿名使用者
1、能對抗野蠻的攻擊,能夠抵禦窮舉法的攻勢。
2、具有無限定義域,如任意長度的位元組字串和有限的值域或者固定長度的位元串。
3、具備應用的多樣性,對於給定的雜湊值,沒有實用的方法可以計算出乙個原始輸入,也就是說很難偽造。
4、能夠因為環境因素的變化,如機器配置或者ip位址的改變而有變動。以保證原始檔的安全性。
5、方便錯誤監測和修復函式。當雜湊函式被用於校驗和的時候可以用相對較短的雜湊值來驗證任意長度的資料是否被更改過。
6、安全雜湊演算法接受的輸入文件小於2的64次方 位,產生160位的報文摘要。該演算法實際的目標使得找出乙個能夠匹配給定的雜湊值的文字是不可能的計算。
2.安全的hash函式一般滿足哪些要求
7樓:匿名使用者
hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映,pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,而不可能從雜湊值來唯一的確定輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。
hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值.也可以說,hash就是找到一種資料內容和資料存放位址之間的對映關係了解了hash基本定義,就不能不提到一些著名的hash演算法,md5和sha1可以說是目前應用最廣泛的hash演算法,而它們都是以md4為基礎設計的。那麼他們都是什麼意思呢?
這裡簡單說一下:1)md4md4(rfc1320)是mit的ronaldl.rivest在2023年設計的,md是messagedigest的縮寫。
它適用在32位字長的處理器上用高速軟體實現--它是基於32位運算元的位操作來實現的。2)md5md5(rfc1321)是rivest於2023年對md4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與md4相同。
md5比md4來得複雜,並且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好3)sha1及其他sha1是由nistnsa設計為同dsa一起使用的,它對長度小於264的輸入,產生長度為160bit的雜湊值,因此抗窮舉(brute-force)性更好。sha-1設計時基於和md4相同原理,並且模仿了該演算法。
樹的「器官」一般包括哪部分,樹的「器官」一般包括哪六個部分?
樹的器官一般包括根 莖 葉 花 果實 種子六個部分。植物的器官可分為營養器官及 官。營養器官通常指植物的根 莖 葉等器官,而 官則為花 果實 種子等。根 根的生理功能是吸收 支援 合成和貯藏,植物的根還有營養繁殖的作用。莖 莖的生理功能主要是運輸水分 無機鹽類和有機營養物質,同時又能支援技 葉 花和...
一般說的「三高」,是指哪三高,一般說的三高指哪三高?
高血糖 高血壓 高血脂 高血壓,高血脂,高血糖。高血脂,高血糖,高血壓 一般說的三高指哪三高?三高是指 高血壓,高血脂,高血糖。心腦血管病罪魁禍首 三高 嚴重危害現代人健康。高血壓係指迴圈系統內血壓高於正常而言,通常指體迴圈動脈血壓增高,是一種常見的臨床綜合症。通常是以低於140 90公釐汞柱為正常...
y2yyx 2 e x 2x的一般解或特解
特徵方程 r 2 2r 1 0,得重根 r 1,1 對於 y 2y y x 2 e x,特解應設為 y x 2 ax b e x ax 3 bx 2 e x,則 y ax 3 2a 2b x 2 2bx e x,y ax 3 6a b x 2 6a 4b x 2b e x 代入y 2y y x 2 ...