Exportar (0) Imprimir
Expandir todo

HashAlgorithm.TransformFinalBlock (Método)

Actualización: noviembre 2007

Calcula el valor hash para la región especificada de la matriz de bytes indicada.

Espacio de nombres:  System.Security.Cryptography
Ensamblado:  mscorlib (en mscorlib.dll)

public byte[] TransformFinalBlock(
	byte[] inputBuffer,
	int inputOffset,
	int inputCount
)
public final byte[] TransformFinalBlock(
	byte[] inputBuffer,
	int inputOffset,
	int inputCount
)
public final function TransformFinalBlock(
	inputBuffer : byte[], 
	inputOffset : int, 
	inputCount : int
) : byte[]

Parámetros

inputBuffer
Tipo: System.Byte[]
La entrada para la cual se calcula el código hash.
inputOffset
Tipo: System.Int32
Desplazamiento en la matriz de bytes a partir del cual se van a empezar a usar los datos.
inputCount
Tipo: System.Int32
Número de bytes de la matriz de bytes que se van a utilizar como datos.

Valor devuelto

Tipo: System.Byte[]
Una matriz que es una copia de la parte de la entrada a la que se aplica el algoritmo hash.

Implementaciones

ICryptoTransform.TransformFinalBlock(Byte[], Int32, Int32)

ExcepciónCondición
ArgumentException

inputCount utiliza un valor no válido.

O bien

inputBuffer tiene una longitud de desplazamiento no válida.

ArgumentNullException

inputBuffer es null.

ArgumentOutOfRangeException

inputOffset está fuera del intervalo. Este parámetro no puede ser un número no negativo.

ObjectDisposedException

El objeto ya se ha eliminado.

Debe llamar al método TransformFinalBlock después de llamar al método TransformBlock pero antes de recuperar el último valor hash.

Tenga en cuenta que el valor devuelto de este método no es el valor hash, sino sólo una copia de la parte de los datos de entrada a la que se aplicó el algoritmo hash. Para recuperar el último valor hash después de llamar al método TransformFinalBlock, obtenga la matriz de bytes contenida en la propiedad Hash.

En los ejemplos de código siguientes se utiliza el método TransformFinalBlock con el método TransformBlock para aplicar un algoritmo hash a una cadena.

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));
	}

}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft