github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/crypto/hmac/hmac.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 /* 6 Package hmacは、米国連邦情報処理標準出版物198で定義されているキー付きハッシュメッセージ認証コード(HMAC)を実装しています。 7 HMACは、メッセージに署名するためにキーを使用する暗号ハッシュです。 8 受信者は、同じキーを使用してハッシュを再計算することで、ハッシュを検証します。 9 10 タイミングの副作用を回避するために、受信者はMACを比較するためにEqualを使用することに注意する必要があります: 11 12 // ValidMACは、messageMACがメッセージの有効なHMACタグであるかどうかを報告します。 13 func ValidMAC(message、messageMAC、key []byte) bool { 14 mac := hmac.New(sha256.New、key) 15 mac.Write(message) 16 expectedMAC := mac.Sum(nil) 17 return hmac.Equal(messageMAC、expectedMAC) 18 } 19 */package hmac 20 21 import ( 22 "github.com/shogo82148/std/hash" 23 ) 24 25 // Newは指定した [hash.Hash] タイプとキーを使用して新しいHMACハッシュを返します。 26 // [crypto/sha256] からのsha256.NewのようなNew関数はhとして使用できます。 27 // hは呼び出されるたびに新しいハッシュを返す必要があります。 28 // 標準ライブラリの他のハッシュ実装とは異なり、返されたハッシュは [encoding.BinaryMarshaler] または [encoding.BinaryUnmarshaler] を実装していません。 29 func New(h func() hash.Hash, key []byte) hash.Hash 30 31 // Equalは、タイミング情報を漏らさずに2つのMACを比較します。 32 func Equal(mac1, mac2 []byte) bool