SHA256 類別

定義

計算 SHA256 輸入資料的雜湊值。

public ref class SHA256 abstract : System::Security::Cryptography::HashAlgorithm
public abstract class SHA256 : System.Security.Cryptography.HashAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class SHA256 : System.Security.Cryptography.HashAlgorithm
type SHA256 = class
    inherit HashAlgorithm
[<System.Runtime.InteropServices.ComVisible(true)>]
type SHA256 = class
    inherit HashAlgorithm
Public MustInherit Class SHA256
Inherits HashAlgorithm
繼承
衍生
屬性

範例

以下範例計算目錄中所有檔案的 SHA-256 雜湊值。

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)
                {
                    using (FileStream fileStream = fInfo.Open(FileMode.Open))
                    {
                        try
                        {
                            // Create a fileStream for the file.
                            // 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);
                        }
                        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.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

備註

雜湊值作為固定大小的唯一值,代表大量資料。 兩組資料的雜湊值應匹配,當且僅當對應的資料也相符。 資料中的小變動會導致雜湊值大幅且不可預測地變化。

SHA256 演算法的雜湊大小為 256 位元。

這是抽象類。

建構函式

名稱 Description
SHA256()

初始化 SHA256 的新執行個體。

欄位

名稱 Description
HashSizeInBits

SHA-256 演算法產生的雜湊大小,單位為位元。

HashSizeInBytes

SHA-256 演算法產生的雜湊大小,以位元組為單位。

HashSizeValue

代表計算出的雜湊碼大小(以位元為單位)。

(繼承來源 HashAlgorithm)
HashValue

代表計算出的雜湊碼值。

(繼承來源 HashAlgorithm)
State

代表雜湊計算的狀態。

(繼承來源 HashAlgorithm)

屬性

名稱 Description
CanReuseTransform

會得到一個值,表示電流轉換是否可以重複使用。

(繼承來源 HashAlgorithm)
CanTransformMultipleBlocks

當在派生類別中覆寫時,會得到一個值,表示是否可以轉換多個區塊。

(繼承來源 HashAlgorithm)
Hash

取得計算出的雜湊碼值。

(繼承來源 HashAlgorithm)
HashSize

取得計算出的雜湊碼大小(以位元為單位)。

(繼承來源 HashAlgorithm)
InputBlockSize

當在衍生類別中覆寫時,會得到輸入區塊大小。

(繼承來源 HashAlgorithm)
OutputBlockSize

當在衍生類別中覆寫時,會得到輸出區塊大小。

(繼承來源 HashAlgorithm)

方法

名稱 Description
Clear()

釋放 HashAlgorithm 類別所使用的所有資源。

(繼承來源 HashAlgorithm)
ComputeHash(Byte[], Int32, Int32)

計算指定位元組陣列中指定區域的雜湊值。

(繼承來源 HashAlgorithm)
ComputeHash(Byte[])

計算指定位元組陣列的雜湊值。

(繼承來源 HashAlgorithm)
ComputeHash(Stream)

計算指定 Stream 物件的雜湊值。

(繼承來源 HashAlgorithm)
ComputeHashAsync(Stream, CancellationToken)

非同步計算指定 Stream 物件的雜湊值。

(繼承來源 HashAlgorithm)
Create()

建立 的 SHA256預設實作實例。

Create(String)
已淘汰.

建立指定實作 SHA256的實例。

Dispose()

釋放目前類別實例 HashAlgorithm 所使用的所有資源。

(繼承來源 HashAlgorithm)
Dispose(Boolean)

釋放 未管理的資源, HashAlgorithm 並可選擇性地釋放受管理資源。

(繼承來源 HashAlgorithm)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
HashCore(Byte[], Int32, Int32)

當在衍生類別中覆寫時,會將寫入物件的資料導向計算雜湊演算法。

(繼承來源 HashAlgorithm)
HashCore(ReadOnlySpan<Byte>)

將寫入物件的資料導向雜湊演算法以計算雜湊值。

(繼承來源 HashAlgorithm)
HashData(Byte[])

使用 SHA-256 演算法計算資料雜湊值。

HashData(ReadOnlySpan<Byte>, Span<Byte>)

使用 SHA-256 演算法計算資料雜湊值。

HashData(ReadOnlySpan<Byte>)

使用 SHA-256 演算法計算資料雜湊值。

HashData(Stream, Span<Byte>)

使用 SHA-256 演算法計算串流的雜湊值。

HashData(Stream)

使用 SHA-256 演算法計算串流的雜湊值。

HashDataAsync(Stream, CancellationToken)

非同步計算流的雜湊值,使用 SHA-256 演算法。

HashDataAsync(Stream, Memory<Byte>, CancellationToken)

非同步計算流的雜湊值,使用 SHA-256 演算法。

HashFinal()

當在衍生類別中覆寫時,會在最後資料被密碼雜湊演算法處理後完成雜湊計算。

(繼承來源 HashAlgorithm)
Initialize()

將雜湊演算法重置到初始狀態。

(繼承來源 HashAlgorithm)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

計算輸入位元組陣列指定區域的雜湊值,並將輸入位元組陣列的指定區域複製到輸出位元組陣列的指定區域。

(繼承來源 HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32)

計算指定位元組陣列中指定區域的雜湊值。

(繼承來源 HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

嘗試計算指定位元組陣列的雜湊值。

(繼承來源 HashAlgorithm)
TryHashData(ReadOnlySpan<Byte>, Span<Byte>, Int32)

嘗試使用 SHA-256 演算法計算資料雜湊值。

TryHashFinal(Span<Byte>, Int32)

嘗試在雜湊演算法處理最後資料後完成雜湊計算。

(繼承來源 HashAlgorithm)

明確介面實作

名稱 Description
IDisposable.Dispose()

釋放 未管理的資源, HashAlgorithm 並可選擇性地釋放受管理資源。

(繼承來源 HashAlgorithm)

適用於

另請參閱