Définition:
En cryptographie, SHA est une fonction de hachage cryptographique qui prend en entrée 20 octets et rend la valeur de hachage en nombre hexadécimal, de 40 chiffres environ.
Classe Message Digest:
Pour calculer la valeur de hachage cryptographique en Java, on utilise la classe MessageDigest, sous le paquet java.security.
La classe MessageDigest fournit la fonction de hachage cryptographique suivante pour trouver la valeur de hachage d’un texte, ce sont :
- MD5
- SHA-1
- SHA-256
Ces algorithmes sont initialisés dans la méthode statique appelée getInstance(). Après avoir sélectionné l’algorithme, il calcule la valeur du condensé et renvoie les résultats dans un tableau d’octets.
La classe BigInteger est utilisée, qui convertit le tableau d’octets résultant dans sa représentation signe-magnitude. Cette représentation est convertie au format hexadécimal pour obtenir le MessageDigest
Exemples :
Input : hello worldOutput : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9Input : GeeksForGeeksOutput : 112e476505aab51b05aeb2246c02a11df03e1187e886f7c55d4e9935c290ade
import
java.math.BigInteger;
import
java.nio.charset.StandardCharsets;
import
java.security.MessageDigest;
import
java.security.NoSuchAlgorithmException;
class
GFG {
public
static
byte
getSHA(String input)
throws
NoSuchAlgorithmException
{
MessageDigest md = MessageDigest.getInstance(
"SHA-256"
);
return
md.digest(input.getBytes(StandardCharsets.UTF_8));
}
public
static
String toHexString(
byte
hash)
{
BigInteger number =
new
BigInteger(
1
, hash);
.
StringBuilder hexString =
new
StringBuilder(number.toString(
16
));
while
(hexString.length() <
32
)
{
hexString.insert(
0
,
'0'
);
}
return
hexString.toString();
}
public
static
void
main(String args)
{
try
{
System.out.println(
"HashCode Generated by SHA-256 for:"
);
String s1 =
"GeeksForGeeks"
;
System.out.println(
"\n"
+ s1 +
" : "
+ toHexString(getSHA(s1)));
String s2 =
"hello world"
;
System.out.println(
"\n"
+ s2 +
" : "
+ toHexString(getSHA(s2)));
}
catch
(NoSuchAlgorithmException e) {
(NoSuchAlgorithmException e) {
System.out.println(
"Exception thrown for incorrect algorithm: "
+ e);
}
}
}
.
HashCode Generated by SHA-256 for:GeeksForGeeks : 112e476505aab51b05aeb2246c02a11df03e1187e886f7c55d4e9935c290adehello world : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Application:
- Cryptographie
- Intégrité des données