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
SHA256 using namespace System; using namespace System::IO; using namespace System::Security::Cryptography; // Print the byte array in a readable format. void PrintByteArray( array<Byte>^array ) int i; for ( i = 0; i < array->Length; i++ ) Console::Write( String::Format( "{0:X2}", array[ i ] ) ); if ( (i % 4) == 3 ) Console::Write( " " ); Console::WriteLine(); int main() array<String^>^args = Environment::GetCommandLineArgs(); if ( args->Length < 2 ) Console::WriteLine( "Usage: hashdir <directory>" ); return 0; // Create a DirectoryInfo object representing the specified directory. DirectoryInfo^ dir = gcnew DirectoryInfo( args[ 1 ] ); // Get the FileInfo objects for every file in the directory. array<FileInfo^>^files = dir->GetFiles(); // Initialize a SHA256 hash object. SHA256 ^ mySHA256 = SHA256Managed::Create(); array<Byte>^hashValue; // Compute and print the hash values for each file in directory. System::Collections::IEnumerator^ myEnum = files->GetEnumerator(); while ( myEnum->MoveNext() ) FileInfo^ fInfo = safe_cast<FileInfo^>(myEnum->Current); // Create a fileStream for the file. FileStream^ fileStream = fInfo->Open( FileMode::Open ); // Compute the hash of the fileStream. hashValue = mySHA256->ComputeHash( fileStream ); // Write the name of the file to the Console. Console::Write( "{0}: ", fInfo->Name ); // Write the hash value to the Console. PrintByteArray( hashValue ); // Close the file. fileStream->Close(); return 0; catch ( DirectoryNotFoundException^ ) Console::WriteLine( "Error: The directory specified could not be found." ); catch ( IOException^ ) Console::WriteLine( "Error: A file in the directory could not be accessed." ); 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)) // 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}"); 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 ' 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 End Using 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 Console.WriteLine() End Sub End Module

哈希用作表示大量数据的固定大小的唯一值。 当并且仅当相应数据也匹配时,两组数据的哈希应匹配。 对数据的小更改会导致哈希中出现大量不可预知的更改。

算法的 SHA256 哈希大小为 256 位。

这是一个抽象类。