Questa documentazione è stata archiviata e non viene gestita.

Classe RIPEMD160

Aggiornamento: novembre 2007

Rappresenta la classe astratta dalla quale ereditano tutte le implementazioni dell'algoritmo hash MD160.

Spazio dei nomi:  System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public abstract class RIPEMD160 : HashAlgorithm
/** @attribute ComVisibleAttribute(true) */
public abstract class RIPEMD160 extends HashAlgorithm
public abstract class RIPEMD160 extends HashAlgorithm

Le funzioni hash associano stringhe binarie di lunghezza arbitraria a piccole stringhe binarie di lunghezza fissa. Una delle proprietà della funzione hash di crittografia è quella di non consentire, da un punto di vista computazionale, l'individuazione di due input distinti con hash dello stesso valore; vale a dire, gli hash di due insiemi di dati devono essere uguali se sono uguali anche i corrispondenti dati. Piccole variazioni ai dati producono variazioni imprevedibili di ampia portata nell'hash.

RIPEMD-160 è una funzione hash di crittografia a 160 bit. È concepita per l'utilizzo in sostituzione delle funzioni hash a 128 bit MD4, MD5 e RIPEMD. RIPEMD è stata sviluppata nell'ambito del progetto dell'Unione Europea RIPE (RACE Integrity Primitives Evaluation, 1988-1992).

Nell'esempio di codice riportato di seguito viene calcolato il codice hash RIPEMD160 per tutti i file in una directory.

using System;
using System.IO;
using System.Security.Cryptography;

	public class HashDirectory
	{
		// Print the byte array in a readable format.
		public static void PrintByteArray(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();
		}

		public static void Main(String[] args)
		{
			if (args.Length < 1)
			{
				Console.WriteLine("Usage: hashdir <directory>");
				return;
			}
			try
			{
				// Create a DirectoryInfo object representing the specified directory.
				DirectoryInfo dir = new DirectoryInfo(args[0]);
				// Get the FileInfo objects for every file in the directory.
				FileInfo[] files = dir.GetFiles();
				// Initialize a RIPE160 hash object.
				RIPEMD160 myRIPEMD160 = RIPEMD160Managed.Create();
				byte[] hashValue;
				// Compute and print the hash values for each file in directory.
				foreach (FileInfo fInfo in files)
				{
					// Create a fileStream for the file.
					FileStream fileStream = fInfo.Open(FileMode.Open);
					// Compute the hash of the fileStream.
					hashValue = myRIPEMD160.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();
				}
				return;
			}
			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.");
			}
		}
	}


import System.*;
import System.IO.*;
import System.Security.Cryptography.*;

public class HashDirectory
{
    // Print the byte array in a readable format.
    public static void PrintByteArray(ubyte array[])
    {
        int i;
        for (i = 0; i < array.get_Length(); i++) {
            Console.Write(String.Format("{0:X2}", array.get_Item(i)));
            if (i % 4 == 3) {
                Console.Write(" ");
            }
        }
        Console.WriteLine();
    } //PrintByteArray

    public static void main(String[] args)
    {        
        if (args.get_Length() < 1) {
            Console.WriteLine("Usage: hashdir <directory>");
            return;
        }
        try {
            // Create a DirectoryInfo object representing the specified 
            // directory.
            DirectoryInfo dir = new DirectoryInfo(args[0]);
            // Get the FileInfo objects for every file in the directory.
            FileInfo files[] = dir.GetFiles();
            // Initialize a RIPE160 hash object.
            RIPEMD160 myRIPEMD160 = RIPEMD160Managed.Create();
            ubyte hashValue[];
            FileInfo fInfo = null;
            for (int iCtr = 0; iCtr < files.get_Length(); iCtr++) {
                // Compute and print the hash values for each file in directory.
                fInfo = files[iCtr];
                // Create a fileStream for the file.
                FileStream fileStream = fInfo.Open(FileMode.Open);
                // Compute the hash of the fileStream.
                hashValue = myRIPEMD160.ComputeHash(fileStream);
                // Write the name of the file to the Console.
                Console.Write(fInfo.get_Name() + ": ");
                // Write the hash value to the Console.
                PrintByteArray(hashValue);
                // Close the file.
                fileStream.Close();
            }
            return;
        }
        catch (DirectoryNotFoundException exp) {
            Console.WriteLine("Error: The directory specified could"
                + "not be found.");
        }
        catch (IOException exp) {
            Console.WriteLine("Error: A file in the directory could not "
                + "be accessed.");
        }
    } //main
} //HashDirectory


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0
Mostra: