亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我應該選擇哪個加密哈希函數? 問問題

我應該選擇哪個加密哈希函數? 問問題

慕田峪4524236 2019-11-22 13:07:04
.NET框架附帶6種不同的哈希算法:MD5:16個字節(散列時間500MB:1462毫秒)SHA-1:20個字節(1644毫秒)SHA256:32個字節(5618毫秒)SHA384:48個字節(3839毫秒)SHA512:64個字節(3820毫秒)RIPEMD:20個字節(7066 ms)這些功能中的每個功能都有不同。MD5是最快的,而RIPEMD是最慢的。MD5的優點是適合內置的Guid類型。它是類型3 UUID的基礎。SHA-1哈希是類型5 UUID的基礎。這使得它們非常易于識別。但是,MD5容易受到碰撞攻擊,SHA-1也容易受到攻擊,但是程度較小。在什么情況下應該使用哪種哈希算法?我真的很想知道答案的具體問題是:MD5不值得信賴嗎?在正常情況下,當您使用沒有惡意意圖的MD5算法并且任何第三方都沒有惡意意圖時,您會期望發生任何沖突(這意味著兩個任意byte []會產生相同的哈希)RIPEMD比SHA1好多少?(如果更好),其計算速度要慢5倍,但哈希大小與SHA1相同。在對文件名(或其他短字符串)進行哈希處理時,獲得非惡意沖突的幾率是多少?(例如,兩個具有相同MD5哈希值的隨機文件名)(帶有MD5 / SHA1 / SHA2xx)通常,非惡意沖突的幾率是多少?這是我使用的基準:    static void TimeAction(string description, int iterations, Action func) {        var watch = new Stopwatch();        watch.Start();        for (int i = 0; i < iterations; i++) {            func();        }        watch.Stop();        Console.Write(description);        Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);    }    static byte[] GetRandomBytes(int count) {        var bytes = new byte[count];        (new Random()).NextBytes(bytes);        return bytes;    }    static void Main(string[] args) {        var md5 = new MD5CryptoServiceProvider();        var sha1 = new SHA1CryptoServiceProvider();        var sha256 = new SHA256CryptoServiceProvider();        var sha384 = new SHA384CryptoServiceProvider();        var sha512 = new SHA512CryptoServiceProvider();        var ripemd160 = new RIPEMD160Managed();        var source = GetRandomBytes(1000 * 1024);        var algorithms = new Dictionary<string,HashAlgorithm>();        algorithms["md5"] = md5;        algorithms["sha1"] = sha1;        algorithms["sha256"] = sha256;        algorithms["sha384"] = sha384;        algorithms["sha512"] = sha512;        algorithms["ripemd160"] = ripemd160;        foreach (var pair in algorithms) {            Console.WriteLine("Hash Length for {0} is {1}",                 pair.Key,                 pair.Value.ComputeHash(source).Length);        }
查看完整描述

4 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

時代變了,我們有SHA3贏家。我建議使用SHA3競賽的keccak(又名SHA3)獲勝者。

原始答案:

以最弱到最強的順序,我會說:

  1. RIPEMD BROKEN,不應該使用,因為在此pdf中可以看到

  2. MD-5破碎,切勿使用,可在2分鐘內用筆記本電腦破碎

  3. SHA-1 損壞,原則上不要使用,原則上已被破壞,到本周攻擊越來越好

  4. SHA-2弱,在未來幾年內可能會損壞。發現了一些弱點。請注意,通常,密鑰大小越大,散列函數破解的難度就越大。雖然密鑰大小=強度并不總是正確的,但大多數情況下都是正確的。因此SHA-256可能比SHA-512弱。

  5. Skein不為人知的弱點,是SHA-3的候選人。它是相當新的,因此未經測試。它已經以多種語言實現。

  6. MD6未知的弱點,是SHA-3的另一種候選方案??赡鼙萐kien強,但在單核計算機上則慢。像Skien一樣,未經測試。一些具有安全意識的開發人員正在以任務關鍵型角色使用它。

我個人會使用MD6,因為永遠不會太偏執。如果真正關心速度,我會考慮使用Skein或SHA-256。


查看完整回答
反對 回復 2019-11-22
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

在MD5的防御中,沒有已知的方法來生成帶有任意MD5哈希的文件。原作者必須事先計劃好有工作上的沖突。因此,如果接收方信任發送方,則MD5可以。如果簽名人是惡意的,則MD5會被破壞,但是它不容易受到中間人攻擊。


查看完整回答
反對 回復 2019-11-22
  • 4 回答
  • 0 關注
  • 657 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號