Comment puis-je hacher une chaîne de caractères avec sha256
en Java ?
Réponses
Trop de publicités?SHA-256 n'est pas un "encodage" - c'est un hachage à sens unique.
Il s'agit essentiellement de convertir la chaîne de caractères en octets (par exemple en utilisant text.getBytes(StandardCharsets.UTF_8)
), puis de hacher les octets. Notez que le résultat du hachage également sont des données binaires arbitraires, et si vous voulez les représenter dans une chaîne, vous devez utiliser la base64 ou hex... Ne le fais pas. essayez d'utiliser le String(byte[], String)
constructeur.
par exemple
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes(StandardCharsets.UTF_8));
Je pense que la solution la plus simple est d'utiliser Apache Common Codec :
String sha256hex = org.apache.commons.codec.digest.DigestUtils.sha256Hex(stringText);
Une autre alternative est Goyave qui dispose d'une suite facile à utiliser de Hachage utilitaires. Par exemple, pour hacher une chaîne de caractères en utilisant SHA256 en tant que chaîne hexagonale, il suffit de faire :
final String hashed = Hashing.sha256()
.hashString("your input", StandardCharsets.UTF_8)
.toString();
Exemple complet de hachage d'une chaîne de caractères comme une autre chaîne de caractères.
public static String sha256(final String base) {
try{
final MessageDigest digest = MessageDigest.getInstance("SHA-256");
final byte[] hash = digest.digest(base.getBytes("UTF-8"));
final StringBuilder hexString = new StringBuilder();
for (int i = 0; i < hash.length; i++) {
final String hex = Integer.toHexString(0xff & hash[i]);
if(hex.length() == 1)
hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
} catch(Exception ex){
throw new RuntimeException(ex);
}
}
- Réponses précédentes
- Plus de réponses