Md5
散列函式組合——安全級別
當使用兩個散列函式時,g(x)=SHA-512 和 f(x)=MD5 g(x) 有 512 位輸出(使用鹽) f(x) 有 128 位輸出。
假設 z(x)=f(g(x)) 意味著輸出是 128 位長。
問題: 使用 z(x) 是否像使用帶鹽的 MD5 一樣?因此,安全級別較低。反對只使用帶鹽的 g(x) 並獲得 512 位長的輸出?
一方面 z(x) 是一個比 g(x) 更複雜的函式,但另一方面 512 位與 128 位相比應該需要更長的時間來破解。
對於您的案例,z(x) 等效於 f(x)。MD5 具有已知的碰撞漏洞,因此您的整體輸出將遭受相同的漏洞。此外,由於輸出長度為 128 位,因此它丟棄了具有更長雜湊輸出的額外安全餘量。
單獨使用 SHA-512 更安全。如果長度擴展攻擊是一個問題,請使用 SHA-512/256、SHA3、Blake2b、HMAC 或其他不受此類攻擊的安全雜湊函式。