測試環境:centos 6.4 x86_64位 vmware虛擬機器 1g ram (物理主機cpu i7-3770 3.4ghz)
測試**(使用openssl的hash庫):
#include #include#include
#include
#include
#include
using
namespace
std;
#include
#include
string md5(const
string
str)
return
ss.str();
}string sha256(const
string
str)
return
ss.str();
}string sha512(const
string
str)
return
ss.str();
}int
main()
time_t t2=time(0
); cout
<< t2
<< t2-t1 /sha256
t1=time(0
); cout
<< "
sha256:
"
<< t1
t2=time(0
); cout
<< t2
<< t2-t1 /sha512
t1=time(0
); cout
<< "
sha512:
"
<< t1
t2=time(0
); cout
<< t2
<< t2-t1
}
編譯: g++ -o sha sha.cpp -lssl -lcrypto
執行: ./sha
結果:
md5:1409193206
1409193228
22sha256:
1409193228
1409193263
35sha512:
1409193263
1409193318
55
分別執行了1000萬次hash運算, md5用了22秒, sha256用了35秒,sha512用了55秒。
運算時間基本處於同一量級,使用sha256或sha512代替md5是非常必要的。
因環境差異對結果影響較大,資料僅供備忘和參考。
單向雜湊函式,HASH演算法
md2 md4 message digest algorithm,影響了md5,sha 1等演算法 md5 已被攻破,美國已經不推薦使用。md6 在改進中,因速度問題沒有被sha 3採用。sha 0 被淘汰 sha 1 secure hash algorithm 發現sha 1使用最廣泛,但理論上可...
單向雜湊演算法(Hash) MD5演算法
md5 又稱訊息摘要演算法,對於輸入的任意長度的訊息進行產生固定長度為128位的訊息摘要,由於md5的演算法是對資料進行有失真壓縮,也就是會無法直接通過分析演算法來反向通過md5值獲取原始壓縮資料,一般是用來資料校驗和避免密碼這類的隱私資料的明碼儲存。演算法步驟 1.資料填充 填充訊息使其長度對51...
單向雜湊函式
在介紹單向雜湊函式之前,我們先了解一下什麼情況下需要使用到單向雜湊函式。單向雜湊函式有乙個輸入和輸出。輸入稱為訊息,輸出稱為雜湊值。雜湊值的長度跟訊息的長度無關,不論多少大小的長度的訊息,都會計算出固定長度的雜湊值。單向雜湊函式具有下面幾個特性 能夠根據任意長度的訊息計算出固定長度的雜湊值。計算速度...