Los valores Hash son el resultado de aplicar funciones de un sólo sentido (denominadas funciones Hash) a un bloque de datos. Las funciones Hash transforman este bloque de datos en una cadena de longitud fija, ahora bien, pequeñas modificaciones en los datos alteran significativamente el resultado obtenido. De ahí que no sea posible que dos conjuntos de datos distintos generen el mismo resultado (al menos en teoria).
Los valores Hash son utilizados ampliamente en el envío de mensajes a través de las redes. Un ejemplo de esto lo tenemos con las redes edonkey y bittorrent. Son parte importante de sus protocolos de transferencia de archivos, al permitir verificar que la información que se envía es la misma que se recibe. Aunque trabajan de modos distintos: mientras que edonkey integra el Hash del archivo completo dentro del URL de descarga, bittorrent divide el archivo a enviar en fragmentos de longitud fija, calcula el hash para cada fragmento y lo anexa dentro de archivos de meta información que envía junto con dichos fragmentos.
La plataforma .NET nos proporciona un amplio soporte para funciones Hash. El espacio de nombres System.Cryptography, contiene las clases para manejar los algoritmos Hash soportados.
Los más usados actualmente son MD5 (Message Digest 5) y SHA (Secure Hash Algorithm).
Tabla descriptiva:
| Algoritmo | Descripción |
| MD5 |
El MD5 fue desarrollado en 1991 por Rivest. El mensaje se rellena para que su longitud en bits más 448 sea divisible por 512. El mensaje se procesa iterativamente en bloques de 512 bits y cada bloque es procesado en tres rotaciones distintas. Genera Una cadena de salida de 128 Bits de longitud. |
| SHA1 |
El SHA es un algoritmo de resumen seguro desarrollado por el NIST. SHA-1 es una versión corregida del algoritmo publicado en 1994. El algoritmo es un estándar ANSI. El algoritmo toma un mensaje de menos de 264 bits y genera un resumen de 160 bits. Es más lento que el MD5, pero la mayor longitud de clave lo hace más resistente a ataques de colisión por fuerza bruta y de inversión. |
| SHA256 |
La función SHA256 funciona en un bloque de mensajes de 512 bits y un valor Hash intermedio de 256 bits. Es esencialmente un algoritmo de cifrado de bloques de 256 bits que cifra el valor intermedio usando el bloque del mensaje como llave. |
| SHA512 | La función SHA512 funciona en un bloque de mensajes de 1024 bits y un valor Hash intermedio de 512 Bits. Es esencialmente un algoritmo de cifrado de bloques de 512 bits que cifra el valor intermedio usando el bloque del mensaje como llave. |
| SHA384 |
Se define de la misma manera que el SHA512, con dos excepciones: el valor inicial y en que el final es truncado en menos de 384 bits. |