「長さ拡張攻撃(Length Extension Attack)」というのがあるよ。MD5やSHA-1、SHA-256は内部構造がMerkle-Damgard構造で、ハッシュ値から内部状態を復元できてしまう。つまりhash(secret + message)の値を知っていれば、secretを知らなくてもhash(secret + message + padding + 追加データ)を計算できるんだ。これを防ぐためにHMACという方式や、SHA-3(Keccak)のようなスポンジ構造の関数が使われているよ。