HashAlgorithm.ComputeHash HashAlgorithm.ComputeHash HashAlgorithm.ComputeHash HashAlgorithm.ComputeHash Method

定義

入力データのハッシュ値を計算します。Computes the hash value for the input data.

オーバーロード

ComputeHash(Byte[]) ComputeHash(Byte[]) ComputeHash(Byte[]) ComputeHash(Byte[])

指定したバイト配列のハッシュ値を計算します。Computes the hash value for the specified byte array.

ComputeHash(Stream) ComputeHash(Stream) ComputeHash(Stream) ComputeHash(Stream)

指定された Stream オブジェクトのハッシュ値を計算します。Computes the hash value for the specified Stream object.

ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32)

指定したバイト配列の指定した領域のハッシュ値を計算します。Computes the hash value for the specified region of the specified byte array.

ComputeHash(Byte[]) ComputeHash(Byte[]) ComputeHash(Byte[]) ComputeHash(Byte[])

指定したバイト配列のハッシュ値を計算します。Computes the hash value for the specified byte array.

public:
 cli::array <System::Byte> ^ ComputeHash(cli::array <System::Byte> ^ buffer);
public byte[] ComputeHash (byte[] buffer);
member this.ComputeHash : byte[] -> byte[]
Public Function ComputeHash (buffer As Byte()) As Byte()

パラメーター

buffer
Byte[]

ハッシュ コードを計算する対象の入力データ。The input to compute the hash code for.

戻り値

Byte[]

計算済みハッシュ コード。The computed hash code.

例外

オブジェクトは既には帰されています。The object has already been disposed.

次の例では、計算、SHA256文字列のハッシュ値を 64 文字の 16 進形式の文字列としてハッシュを返します。The following example computes the SHA256 hash value of a string and returns the hash as a 64-character, hexadecimal-formatted string. このコード例で作成したハッシュ文字列は、関数と互換性の SHA256 ハッシュ (任意のプラットフォーム) で 64 文字の 16 進数形式のハッシュ文字列を作成します。The hash string created by this code example is compatible with any SHA256 hash function (on any platform) that creates a 64-character, hexadecimal-formatted hash string.

using System;
using System.Security.Cryptography;
using System.Text;

public class Program
{
    public static void Main()
    {
        string source = "Hello World!";
        using (SHA256 sha256Hash = SHA256.Create())
        {
            string hash = GetHash(sha256Hash, source);

            Console.WriteLine($"The SHA256 hash of {source} is: {hash}.");

            Console.WriteLine("Verifying the hash...");

            if (VerifyHash(sha256Hash, source, hash))
            {
                Console.WriteLine("The hashes are the same.");
            }
            else
            {
                Console.WriteLine("The hashes are not same.");
            }
        }
    }

    private static string GetHash(HashAlgorithm hashAlgorithm, string input)
    {

        // Convert the input string to a byte array and compute the hash.
        byte[] data = hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(input));

        // Create a new Stringbuilder to collect the bytes
        // and create a string.
        var sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data 
        // and format each one as a hexadecimal string.
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        // Return the hexadecimal string.
        return sBuilder.ToString();
    }

    // Verify a hash against a string.
    private static bool VerifyHash(HashAlgorithm hashAlgorithm, string input, string hash)
    {
        // Hash the input.
        var hashOfInput = GetHash(hashAlgorithm, input);

        // Create a StringComparer an compare the hashes.
        StringComparer comparer = StringComparer.OrdinalIgnoreCase;

        return comparer.Compare(hashOfInput, hash) == 0;
    }

}
// The example displays the following output:
//    The SHA256 hash of Hello World! is: 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069.
//    Verifying the hash...
//    The hashes are the same.
Imports System.Security.Cryptography
Imports System.Text

Public Module Program
    Public Sub Main()
        Dim source As String = "Hello World!"
        Using sha256Hash As SHA256 = SHA256.Create()

            Dim hash As String = GetHash(sha256Hash, source)

            Console.WriteLine($"The SHA256 hash of {source} is: {hash}.")

            Console.WriteLine("Verifying the hash...")

            If VerifyHash(sha256Hash, source, hash) Then
                Console.WriteLine("The hashes are the same.")
            Else
                Console.WriteLine("The hashes are not same.")
            End If
        End Using
    End Sub 

    Private Function GetHash(ByVal hashAlgorithm As HashAlgorithm, ByVal input As String) As String

        ' Convert the input string to a byte array and compute the hash.
        Dim data As Byte() = hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(input))

        ' Create a new Stringbuilder to collect the bytes
        ' and create a string.
        Dim sBuilder As New StringBuilder()

        ' Loop through each byte of the hashed data 
        ' and format each one as a hexadecimal string.
        For i As Integer = 0 To data.Length - 1
            sBuilder.Append(data(i).ToString("x2"))
        Next

        ' Return the hexadecimal string.
        Return sBuilder.ToString()
    End Function

    ' Verify a hash against a string.
    Private Function VerifyHash(hashAlgorithm As HashAlgorithm, input As String, hash As String) As Boolean
        ' Hash the input.
        Dim hashOfInput As String = GetHash(hashAlgorithm, input)

        ' Create a StringComparer an compare the hashes.
        Dim comparer As StringComparer = StringComparer.OrdinalIgnoreCase

        Return comparer.Compare(hashOfInput, hash) = 0
    End Function
End Module
' The example displays the following output:
'    The SHA256 hash of Hello World! is: 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069.
'    Verifying the hash...
'    The hashes are the same.

ComputeHash(Stream) ComputeHash(Stream) ComputeHash(Stream) ComputeHash(Stream)

指定された Stream オブジェクトのハッシュ値を計算します。Computes the hash value for the specified Stream object.

public:
 cli::array <System::Byte> ^ ComputeHash(System::IO::Stream ^ inputStream);
public byte[] ComputeHash (System.IO.Stream inputStream);
member this.ComputeHash : System.IO.Stream -> byte[]
Public Function ComputeHash (inputStream As Stream) As Byte()

パラメーター

inputStream
Stream Stream Stream Stream

ハッシュ コードを計算する対象の入力データ。The input to compute the hash code for.

戻り値

Byte[]

計算済みハッシュ コード。The computed hash code.

例外

オブジェクトは既には帰されています。The object has already been disposed.

次の例では、計算、SHA256ディレクトリ内のすべてのファイルのハッシュ。The following example calculates the SHA256 hash for all files in a directory.

using System;
using System.IO;
using System.Security.Cryptography;

public class HashDirectory
{
    public static void Main(String[] args)
    {
        if (args.Length < 1)
        {
            Console.WriteLine("No directory selected.");
            return;
        }

        string directory = args[0];
        if (Directory.Exists(directory))
        {
            // Create a DirectoryInfo object representing the specified directory.
           var dir = new DirectoryInfo(directory);
            // Get the FileInfo objects for every file in the directory.
            FileInfo[] files = dir.GetFiles();
            // Initialize a SHA256 hash object.
            using (SHA256 mySHA256 = SHA256.Create())
            {
                // Compute and print the hash values for each file in directory.
                foreach (FileInfo fInfo in files)
                {
                    try { 
                        // Create a fileStream for the file.
                        FileStream fileStream = fInfo.Open(FileMode.Open);
                        // Be sure it's positioned to the beginning of the stream.
                        fileStream.Position = 0;
                        // Compute the hash of the fileStream.
                        byte[] hashValue = mySHA256.ComputeHash(fileStream);
                        // Write the name and hash value of the file to the console.
                        Console.Write($"{fInfo.Name}: ");
                        PrintByteArray(hashValue);
                        // Close the file.
                        fileStream.Close();
                    }
                    catch (IOException e) {
                        Console.WriteLine($"I/O Exception: {e.Message}");
                    }
                    catch (UnauthorizedAccessException e) {
                        Console.WriteLine($"Access Exception: {e.Message}");
                    }
                }
            }
        }
        else
        {
            Console.WriteLine("The directory specified could not be found.");
        }
    }

    // Display the byte array in a readable format.
    public static void PrintByteArray(byte[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            Console.Write($"{array[i]:X2}");
            if ((i % 4) == 3) Console.Write(" ");
        }
        Console.WriteLine();
    }
}
Imports System
Imports System.IO
Imports System.Security.Cryptography

Public Module HashDirectory

    Public Sub Main(ByVal args() As String)
        If args.Length < 1 Then
            Console.WriteLine("No directory selected")
            Return
        End If

        Dim targetDirectory As String = args(0)
        If Directory.Exists(targetDirectory) Then
            ' Create a DirectoryInfo object representing the specified directory.
            Dim dir As New DirectoryInfo(targetDirectory)
            ' Get the FileInfo objects for every file in the directory.
            Dim files As FileInfo() = dir.GetFiles()
            ' Initialize a SHA256 hash object.
            Using mySHA256 As SHA256 = SHA256.Create()
                ' Compute and print the hash values for each file in directory.
                For Each fInfo  As FileInfo In files
                    Try
                        ' Create a fileStream for the file.
                        Dim fileStream = fInfo.Open(FileMode.Open)
                        ' Be sure it's positioned to the beginning of the stream.
                        fileStream.Position = 0
                        ' Compute the hash of the fileStream.
                        Dim hashValue() As Byte = mySHA256.ComputeHash(fileStream)
                        ' Write the name of the file to the Console.
                        Console.Write(fInfo.Name + ": ")
                        ' Write the hash value to the Console.
                        PrintByteArray(hashValue)
                        ' Close the file.
                        fileStream.Close()
                    Catch e As IOException
                        Console.WriteLine($"I/O Exception: {e.Message}")
                    Catch e As UnauthorizedAccessException 
                        Console.WriteLine($"Access Exception: {e.Message}")
                    End Try    
                Next 
            End Using
        Else
           Console.WriteLine("The directory specified could not be found.")
        End If
    End Sub

    ' Print the byte array in a readable format.
    Public Sub PrintByteArray(array() As Byte)
        For i As Integer = 0 To array.Length - 1
            Console.Write($"{array(i):X2}")
            If i Mod 4 = 3 Then
                Console.Write(" ")
            End If
        Next 
        Console.WriteLine()

    End Sub 
End Module

ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32)

指定したバイト配列の指定した領域のハッシュ値を計算します。Computes the hash value for the specified region of the specified byte array.

public:
 cli::array <System::Byte> ^ ComputeHash(cli::array <System::Byte> ^ buffer, int offset, int count);
public byte[] ComputeHash (byte[] buffer, int offset, int count);
member this.ComputeHash : byte[] * int * int -> byte[]
Public Function ComputeHash (buffer As Byte(), offset As Integer, count As Integer) As Byte()

パラメーター

buffer
Byte[]

ハッシュ コードを計算する対象の入力データ。The input to compute the hash code for.

offset
Int32 Int32 Int32 Int32

バイト配列内のデータの使用開始位置を示すオフセット。The offset into the byte array from which to begin using data.

count
Int32 Int32 Int32 Int32

配列内でデータとして使用されるバイトの数。The number of bytes in the array to use as data.

戻り値

Byte[]

計算済みハッシュ コード。The computed hash code.

例外

count が無効な値です。count is an invalid value.

または-or- buffer の長さが無効です。buffer length is invalid.

該当する offset がありません。offset is out of range. このパラメーターには、負数以外を指定する必要があります。This parameter requires a non-negative number.

オブジェクトは既には帰されています。The object has already been disposed.

適用対象