Share via


HMACSHA1 クラス

SHA1 ハッシュ関数を使用して、HMAC (Hash-based Message Authentication Code) を計算します。

この型のすべてのメンバの一覧については、HMACSHA1 メンバ を参照してください。

System.Object
   System.Security.Cryptography.HashAlgorithm
      System.Security.Cryptography.KeyedHashAlgorithm
         System.Security.Cryptography.HMACSHA1

Public Class HMACSHA1
   Inherits KeyedHashAlgorithm
[C#]
public class HMACSHA1 : KeyedHashAlgorithm
[C++]
public __gc class HMACSHA1 : public KeyedHashAlgorithm
[JScript]
public class HMACSHA1 extends KeyedHashAlgorithm

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

HMAC を使用すると、送信者と受信者が共有キーを共有していれば、セキュリティ設定されていないチャネルを通して送信されたメッセージが不正に変更されていないかどうかを確認できます。送信者は元のデータの HMAC を計算し、元のデータと HMAC の両方を単一のメッセージとして送信します。受信者は受信メッセージの HMAC を再計算して、計算した HMAC が送信された HMAC と一致するかどうかをチェックします。

メッセージの変更や正しい HMAC の再生には共有キーが必要なため、データや HMAC を少しでも変更すると不一致が発生します。したがって、コードが一致していれば、メッセージが認証されます。

HMACSHA1 は、どのサイズのキーでも受け入れ、長さが 20 バイトのハッシュ シーケンスを生成します。

使用例

[Visual Basic, C#, C++] SHA1 ハッシュ アルゴリズムを使用して data の HMAC を計算し、 result に格納する例を次に示します。この例では、定義済みの定数 DATA_SIZEKEY_SIZE があることを前提にしています。

 
Dim key(KEY_SIZE) As Byte
Dim data(DATA_SIZE) As Byte
       
Dim hmac As New HMACSHA1(key)
Dim cs As New CryptoStream(Stream.Null, hmac, CryptoStreamMode.Write)
cs.Write(data, 0, data.Length)
cs.Close()
       
Dim result As Byte() = hmac.Hash

[C#] 
byte[] key = new byte[KEY_SIZE];
byte[] data = new byte[DATA_SIZE];

HMACSHA1 hmac = new HMACSHA1(key);
CryptoStream cs = new CryptoStream(Stream.Null, hmac, CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);
cs.Close();

byte[] result = hmac.Hash;

[C++] 
Byte key[] = new Byte[KEY_SIZE];
Byte data[] = new Byte[DATA_SIZE];

HMACSHA1* hmac = new HMACSHA1(key);
CryptoStream* cs = new CryptoStream(Stream::Null, hmac, CryptoStreamMode::Write);
cs->Write(data, 0, data->Length);
cs->Close();

Byte result[] = hmac->Hash;

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Security.Cryptography

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

HMACSHA1 メンバ | System.Security.Cryptography 名前空間 | 暗号サービス