HashAlgorithm.TransformFinalBlock(Byte[], Int32, Int32) HashAlgorithm.TransformFinalBlock(Byte[], Int32, Int32) HashAlgorithm.TransformFinalBlock(Byte[], Int32, Int32) HashAlgorithm.TransformFinalBlock(Byte[], Int32, Int32) Method

Définition

Calcule la valeur de hachage pour la région spécifiée du tableau d'octets spécifié.Computes the hash value for the specified region of the specified byte array.

public:
 virtual cli::array <System::Byte> ^ TransformFinalBlock(cli::array <System::Byte> ^ inputBuffer, int inputOffset, int inputCount);
public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount);
abstract member TransformFinalBlock : byte[] * int * int -> byte[]
override this.TransformFinalBlock : byte[] * int * int -> byte[]
Public Function TransformFinalBlock (inputBuffer As Byte(), inputOffset As Integer, inputCount As Integer) As Byte()

Paramètres

inputBuffer
Byte[]

Entrée pour laquelle le code de hachage doit être calculé.The input to compute the hash code for.

inputOffset
Int32 Int32 Int32 Int32

Offset dans le tableau d'octets à partir duquel l'utilisation de données commence.The offset into the byte array from which to begin using data.

inputCount
Int32 Int32 Int32 Int32

Nombre d'octets dans le tableau d'octets à utiliser comme données.The number of bytes in the byte array to use as data.

Retours

Byte[]

Tableau qui est une copie de la partie de l'entrée qui est hachée.An array that is a copy of the part of the input that is hashed.

Implémente

Exceptions

inputCount utilise une valeur non valide.inputCount uses an invalid value.

ou-or- inputBuffer a une longueur d'offset non valide.inputBuffer has an invalid offset length.

inputOffset est hors limites.inputOffset is out of range. Ce paramètre requiert un nombre non négatif.This parameter requires a non-negative number.

L'objet a déjà été supprimé.The object has already been disposed.

Exemples

Exemple de code suit le TransformFinalBlock méthode avec le TransformBlock méthode à une chaîne de hachage.The following code examples use the TransformFinalBlock method with the TransformBlock method to hash a string.

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

class MainClass
{
	public static void Main()
	{
		RandomNumberGenerator rnd = RandomNumberGenerator.Create();

		byte[] input = new byte[20];
		rnd.GetBytes(input);

		Console.WriteLine("Input        : {0}\n", BytesToStr(input));
		PrintHash(input);
		PrintHashOneBlock(input);
		PrintHashMultiBlock(input, 1);
		PrintHashMultiBlock(input, 2);
		PrintHashMultiBlock(input, 3);
		PrintHashMultiBlock(input, 5);
		PrintHashMultiBlock(input, 10);
		PrintHashMultiBlock(input, 11);
		PrintHashMultiBlock(input, 19);
		PrintHashMultiBlock(input, 20);
		PrintHashMultiBlock(input, 21);
	}

	public static string BytesToStr(byte[] bytes)
	{
		StringBuilder str = new StringBuilder();

		for (int i = 0; i < bytes.Length; i++)
			str.AppendFormat("{0:X2}", bytes[i]);

		return str.ToString();
	}

	public static void PrintHash(byte[] input)
	{
		SHA256Managed sha = new SHA256Managed();
		Console.WriteLine("ComputeHash  : {0}", BytesToStr(sha.ComputeHash(input)));
	}

	public static void PrintHashOneBlock(byte[] input)
	{
		SHA256Managed sha = new SHA256Managed();
		sha.TransformFinalBlock(input, 0, input.Length);
		Console.WriteLine("FinalBlock   : {0}", BytesToStr(sha.Hash));
	}

	public static void PrintHashMultiBlock(byte[] input, int size)
	{
		SHA256Managed sha = new SHA256Managed();
		int offset = 0;

		while (input.Length - offset >= size)
			offset += sha.TransformBlock(input, offset, size, input, offset);

		sha.TransformFinalBlock(input, offset, input.Length - offset);
		Console.WriteLine("MultiBlock {0:00}: {1}", size, BytesToStr(sha.Hash));
	}

}

Imports System
Imports System.Text
Imports System.Security.Cryptography

Class Program

	Public Shared Sub Main()
		Dim rnd As RandomNumberGenerator = RandomNumberGenerator.Create
		Dim input() As Byte = New Byte((20) - 1) {}
		rnd.GetBytes(input)
		Console.WriteLine("Input        : {0}"& vbLf, BytesToStr(input))
		PrintHash(input)
		PrintHashOneBlock(input)
		PrintHashMultiBlock(input, 1)
		PrintHashMultiBlock(input, 2)
		PrintHashMultiBlock(input, 3)
		PrintHashMultiBlock(input, 5)
		PrintHashMultiBlock(input, 10)
		PrintHashMultiBlock(input, 11)
		PrintHashMultiBlock(input, 19)
		PrintHashMultiBlock(input, 20)
		PrintHashMultiBlock(input, 21)
	End Sub

	Public Shared Function BytesToStr(ByVal bytes() As Byte) As String
		Dim str As StringBuilder = New StringBuilder
		Dim i As Integer = 0
		Do While (i < bytes.Length)
		str.AppendFormat("{0:X2}", bytes(i))
		i = (i + 1)
		Loop
		Return str.ToString
	End Function

	Public Shared Sub PrintHash(ByVal input() As Byte)
		Dim sha As SHA256Managed = New SHA256Managed
		Console.WriteLine("ComputeHash  : {0}", BytesToStr(sha.ComputeHash(input)))
	End Sub

	Public Shared Sub PrintHashOneBlock(ByVal input() As Byte)
		Dim sha As SHA256Managed = New SHA256Managed
		sha.TransformFinalBlock(input, 0, input.Length)
		Console.WriteLine("FinalBlock   : {0}", BytesToStr(sha.Hash))
	End Sub

	Public Shared Sub PrintHashMultiBlock(ByVal input() As Byte, ByVal size As Integer)
		Dim sha As SHA256Managed = New SHA256Managed
		Dim offset As Integer = 0

		While ((input.Length - offset)  _
			>= size)
		offset = (offset + sha.TransformBlock(input, offset, size, input, offset))

		End While
		sha.TransformFinalBlock(input, offset, (input.Length - offset))
		Console.WriteLine("MultiBlock {0:00}: {1}", size, BytesToStr(sha.Hash))
	End Sub
End Class

Remarques

Vous devez appeler la TransformFinalBlock méthode après avoir appelé la TransformBlock (méthode), mais avant que vous récupérez la valeur de hachage finale.You must call the TransformFinalBlock method after calling the TransformBlock method but before you retrieve the final hash value.

Notez que la valeur de retour de cette méthode n’est pas la valeur de hachage, mais uniquement une copie de la partie hachée des données d’entrée.Note that the return value of this method is not the hash value, but only a copy of the hashed part of the input data. Pour récupérer la dernière valeur de hachage après avoir appelé la TransformFinalBlock (méthode), get, le tableau d’octets contenu dans le Hash propriété.To retrieve the final hashed value after calling the TransformFinalBlock method, get the byte array contained in the Hash property.

S’applique à