5

好奇心から、本当に...たとえば、Pythonでは

hashlib.sha1("key" + "data").hexdigest() != hmac.new("key", "data", hashlib.sha1)

2つのアクションの間に欠けている論理的な違いはありますか?

4

2 に答える 2

4

hashlib.sha1 は、パラメーターとして指定するコンテンツ「キーデータ」の sha1 ハッシュを単純に提供します (2 つの文字列を単純に連結していることに注意してください)。hmac 呼び出しは、文字列 "key" をキーとして使用し、sha1 をハッシュ関数として使用して、文字列 "data" のキー付きハッシュを提供します。2 つの呼び出しの根本的な違いは、キーを知っている場合にのみ HMAC を再現できるため、誰が hmac を生成したかについても知ることができるということです。SHA1 は、コンテンツが変更されていないことを検出するためにのみ使用できます。

于 2012-07-17T16:44:24.360 に答える
1

マニュアルで答えを見つけました。

https://en.wikipedia.org/wiki/Hmac#Design_principles

于 2012-07-18T13:45:52.040 に答える