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::SHA256
public ref 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.SHA256
public sealed class SHA256Managed : System.Security.Cryptography.SHA256
public class SHA256Managed : System.Security.Cryptography.SHA256
[System.Runtime.InteropServices.ComVisible(true)]
public 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}")>]
type SHA256Managed = class
inherit SHA256
type SHA256Managed = class
inherit SHA256
[<System.Runtime.InteropServices.ComVisible(true)>]
type SHA256Managed = class
inherit SHA256
Public NotInheritable Class SHA256Managed
Inherits SHA256
Public Class SHA256Managed
Inherits SHA256
- 继承
- 属性
示例
以下示例计算目录中所有文件的 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
注解
哈希用作表示大量数据的固定大小的唯一值。 如果相应的数据也匹配,则两组数据集的哈希应匹配。 对数据的小更改会导致哈希中出现大量不可预知的更改。
算法的 SHA256Managed 哈希大小为 256 位。
构造函数
| 名称 | 说明 |
|---|---|
| SHA256Managed() |
已过时.
使用托管库初始化类的新实例 SHA256Managed 。 |
字段
| 名称 | 说明 |
|---|---|
| HashSizeInBits |
已过时.
SHA-256 算法生成的哈希大小(以位为单位)。 (继承自 SHA256) |
| HashSizeInBytes |
已过时.
SHA-256 算法生成的哈希大小(以字节为单位)。 (继承自 SHA256) |
| HashSizeValue |
已过时.
表示计算哈希代码的大小(以位为单位)。 (继承自 HashAlgorithm) |
| HashValue |
已过时.
表示计算的哈希代码的值。 (继承自 HashAlgorithm) |
| State |
已过时.
表示哈希计算的状态。 (继承自 HashAlgorithm) |
属性
| 名称 | 说明 |
|---|---|
| CanReuseTransform |
已过时.
获取一个值,该值指示是否可以重复使用当前转换。 (继承自 HashAlgorithm) |
| CanTransformMultipleBlocks |
已过时.
在派生类中重写时,获取一个值,该值指示是否可以转换多个块。 (继承自 HashAlgorithm) |
| Hash |
已过时.
获取计算的哈希代码的值。 (继承自 HashAlgorithm) |
| HashSize |
已过时.
获取计算哈希代码的大小(以位为单位)。 (继承自 HashAlgorithm) |
| InputBlockSize |
已过时.
在派生类中重写时,获取输入块大小。 (继承自 HashAlgorithm) |
| OutputBlockSize |
已过时.
在派生类中重写时,获取输出块大小。 (继承自 HashAlgorithm) |
方法
显式接口实现
| 名称 | 说明 |
|---|---|
| IDisposable.Dispose() |
已过时.
释放由托管资源使用 HashAlgorithm 的非托管资源,并选择性地释放托管资源。 (继承自 HashAlgorithm) |