Un digest crittografico (o funzione di hash) è un algoritmo che prende un messaggio di lunghezza qualsiasi e lo trasforma in una stringa di lunghezza fissa chiamata impronta (hash). Questa impronta presenta delle caratteristiche definite:
Cryptea implementa e utilizza SHA-512, una delle funzioni di hash più sicure e diffuse al mondo, appartenente alla famiglia SHA-2 e raccomandata dagli standard NIST.
SHA-512 produce un hash di 512 bit (64 byte). Offre un ottimo compromesso tra sicurezza e prestazioni ed è resistente agli attacchi di collisione noti ad oggi.
Utilizziamo SHA-512 per:
javapackage app.cryptea.cert; import java.math.BigInteger; import java.security.MessageDigest; public class SHADigest { public static String getStringDigest(byte[] bytes) throws Exception { MessageDigest digest = MessageDigest.getInstance("SHA-512"); byte[] hash = digest.digest(bytes); String hashtext = new BigInteger(1, hash).toString(16).toUpperCase(); return hashtext; } public static byte[] getByteDigest(byte[] bytes) throws Exception { MessageDigest digest = MessageDigest.getInstance("SHA-512"); byte[] hash = digest.digest(bytes); return hash; } }