HashAlgorithm クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
暗号化ハッシュ アルゴリズムのすべての実装の派生元となる基本クラスを表します。
public ref class HashAlgorithm abstract : System::Security::Cryptography::ICryptoTransform
public ref class HashAlgorithm abstract : IDisposable
public abstract class HashAlgorithm : System.Security.Cryptography.ICryptoTransform
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class HashAlgorithm : System.Security.Cryptography.ICryptoTransform
public abstract class HashAlgorithm : IDisposable
type HashAlgorithm = class
interface ICryptoTransform
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type HashAlgorithm = class
interface ICryptoTransform
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type HashAlgorithm = class
interface IDisposable
interface ICryptoTransform
type HashAlgorithm = class
interface IDisposable
type HashAlgorithm = class
interface IDisposable
interface ICryptoTransform
Public MustInherit Class HashAlgorithm
Implements ICryptoTransform
Public MustInherit Class HashAlgorithm
Implements IDisposable
- 継承
-
HashAlgorithm
- 派生
- 属性
- 実装
例
次のコード例では、配列の SHA256 ハッシュを計算します。 この例では、定義済みのバイト配列 dataArray[]があることを前提としています。
SHA256 は、 HashAlgorithmの派生クラスです。
HashAlgorithm sha = SHA256.Create();
byte[] result = sha.ComputeHash(dataArray);
Dim sha As SHA256 = SHA256.Create()
Dim result As Byte() = sha.ComputeHash(dataArray)
注釈
ハッシュ関数は、最新の暗号化の基礎です。 これらの関数は、任意の長さのバイナリ文字列を、ハッシュ値と呼ばれる固定長の小さなバイナリ文字列にマップします。 暗号化ハッシュ関数には、同じ値にハッシュする 2 つの個別の入力を見つけることが不可能なプロパティがあります。 ハッシュ関数は、一般的にデジタル署名と共に使用され、データの整合性のために使用されます。
ハッシュは、大量のデータを表す固定サイズの一意の値として使用されます。 対応するデータも一致する場合は、2 つのデータ セットのハッシュが一致する必要があります。 データを小さく変更すると、ハッシュに大きな予期しない変更が発生します。
SHA-1 の競合の問題により、Microsoft では SHA-256 以上に基づくセキュリティ モデルをお勧めします。
注意 (実装者)
HashAlgorithm クラスから継承する場合は、HashCore(Byte[], Int32, Int32)とHashFinal()のメンバーをオーバーライドする必要があります。
コンストラクター
| 名前 | 説明 |
|---|---|
| HashAlgorithm() |
HashAlgorithm クラスの新しいインスタンスを初期化します。 |
フィールド
| 名前 | 説明 |
|---|---|
| HashSizeValue |
計算されたハッシュ コードのサイズをビット単位で表します。 |
| HashValue |
計算されたハッシュ コードの値を表します。 |
| State |
ハッシュ計算の状態を表します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| CanReuseTransform |
現在の変換を再利用できるかどうかを示す値を取得します。 |
| CanTransformMultipleBlocks |
派生クラスでオーバーライドされると、複数のブロックを変換できるかどうかを示す値を取得します。 |
| Hash |
計算されたハッシュ コードの値を取得します。 |
| HashSize |
計算されたハッシュ コードのサイズをビット単位で取得します。 |
| InputBlockSize |
派生クラスでオーバーライドされると、入力ブロック サイズを取得します。 |
| OutputBlockSize |
派生クラスでオーバーライドされると、出力ブロック サイズを取得します。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clear() |
HashAlgorithm クラスによって使用されるすべてのリソースを解放します。 |
| ComputeHash(Byte[], Int32, Int32) |
指定したバイト配列の指定した領域のハッシュ値を計算します。 |
| ComputeHash(Byte[]) |
指定したバイト配列のハッシュ値を計算します。 |
| ComputeHash(Stream) |
指定した Stream オブジェクトのハッシュ値を計算します。 |
| Create() |
ハッシュ アルゴリズムの既定の実装のインスタンスを作成します。 |
| Create(String) |
ハッシュ アルゴリズムの指定した実装のインスタンスを作成します。 |
| Dispose() |
HashAlgorithm クラスの現在のインスタンスで使用されているすべてのリソースを解放します。 |
| Dispose(Boolean) |
HashAlgorithmによって使用されるアンマネージ リソースを解放し、必要に応じてマネージド リソースを解放します。 |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| HashCore(Byte[], Int32, Int32) |
派生クラスでオーバーライドされると、オブジェクトに書き込まれたデータがハッシュ アルゴリズムにルーティングされ、ハッシュが計算されます。 |
| HashCore(ReadOnlySpan<Byte>) |
オブジェクトに書き込まれたデータをハッシュ アルゴリズムにルーティングして、ハッシュを計算します。 |
| HashFinal() |
派生クラスでオーバーライドされると、最後のデータが暗号化ハッシュ アルゴリズムによって処理された後にハッシュ計算が完了します。 |
| Initialize() |
ハッシュ アルゴリズムを初期状態にリセットします。 |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| TransformBlock(Byte[], Int32, Int32, Byte[], Int32) |
入力バイト配列の指定した領域のハッシュ値を計算し、入力バイト配列の指定した領域を出力バイト配列の指定された領域にコピーします。 |
| TransformFinalBlock(Byte[], Int32, Int32) |
指定したバイト配列の指定した領域のハッシュ値を計算します。 |
| TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) |
指定したバイト配列のハッシュ値の計算を試みます。 |
| TryHashFinal(Span<Byte>, Int32) |
最後のデータがハッシュ アルゴリズムによって処理された後、ハッシュ計算の最終処理を試みます。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IDisposable.Dispose() |
HashAlgorithmによって使用されるアンマネージ リソースを解放し、必要に応じてマネージド リソースを解放します。 |