SHA256Managed 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
Derived cryptographic types are obsolete. Use the Create method on the base type instead.
使用托管库计算输入数据的 SHA256 哈希值。
public ref class SHA256Managed sealed : System::Security::Cryptography::SHA256public ref class SHA256Managed : System::Security::Cryptography::SHA256public sealed class SHA256Managed : System.Security.Cryptography.SHA256[System.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class SHA256Managed : System.Security.Cryptography.SHA256public class SHA256Managed : System.Security.Cryptography.SHA256[System.Runtime.InteropServices.ComVisible(true)]
public class SHA256Managed : System.Security.Cryptography.SHA256type SHA256Managed = class
    inherit SHA256[<System.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type SHA256Managed = class
    inherit SHA256[<System.Runtime.InteropServices.ComVisible(true)>]
type SHA256Managed = class
    inherit SHA256Public NotInheritable Class SHA256Managed
Inherits SHA256Public Class SHA256Managed
Inherits SHA256- 继承
- 属性
示例
以下示例计算目录中所有文件的 SHA-256 哈希。
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;
   }
   try
   {
      // 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))
                    {
                        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
注解
哈希用作表示大量数据的固定大小的唯一值。 当并且仅当相应数据也匹配时,两组数据的哈希应匹配。 对数据的小更改会导致哈希中出现大量不可预知的更改。
算法的 SHA256Managed 哈希大小为 256 位。
构造函数
| SHA256Managed() | 
				已过时.
			 使用托管库初始化 SHA256Managed 类的新实例。 | 
字段
| HashSizeInBits | 
		已过时.
	 SHA256 算法生成的哈希大小(以位为单位)。(继承自 SHA256) | 
| HashSizeInBytes | 
		已过时.
	 SHA256 算法生成的哈希大小(以字节为单位)。(继承自 SHA256) | 
| HashSizeValue | 
		已过时.
	 表示计算所得的哈希代码的大小(以位为单位)。(继承自 HashAlgorithm) | 
| HashValue | 
		已过时.
	 表示计算所得的哈希代码的值。(继承自 HashAlgorithm) | 
| State | 
		已过时.
	 表示哈希计算的状态。(继承自 HashAlgorithm) | 
属性
| CanReuseTransform | 
		已过时.
	 获取一个值,该值指示是否可重复使用当前转换。(继承自 HashAlgorithm) | 
| CanTransformMultipleBlocks | 
		已过时.
	 当在派生类中重写时,获取一个值,该值指示是否可以转换多个块。(继承自 HashAlgorithm) | 
| Hash | 
		已过时.
	 获取计算所得的哈希代码的值。(继承自 HashAlgorithm) | 
| HashSize | 
		已过时.
	 获取计算所得的哈希代码的大小(以位为单位)。(继承自 HashAlgorithm) | 
| InputBlockSize | 
		已过时.
	 当在派生类中重写时,获取输入块的大小。(继承自 HashAlgorithm) | 
| OutputBlockSize | 
		已过时.
	 当在派生类中重写时,获取输出块的大小。(继承自 HashAlgorithm) | 
方法
显式接口实现
| IDisposable.Dispose() | 
		已过时.
	 释放由 HashAlgorithm 占用的非托管资源,还可以另外再释放托管资源。(继承自 HashAlgorithm) |