Comment puis-je hacher une chaîne avec sha256
en Java? Quelqu'un connaît-il une bibliothèque gratuite pour cela?
210
Comment puis-je hacher une chaîne avec sha256
en Java? Quelqu'un connaît-il une bibliothèque gratuite pour cela?
Réponses:
SHA-256 n'est pas un "encodage" - c'est un hachage unidirectionnel.
Vous convertiriez essentiellement la chaîne en octets (par exemple en utilisant
text.getBytes(StandardCharsets.UTF_8)
), puis hacheriez les octets. Notez que le résultat du hachage serait également des données binaires arbitraires, et si vous voulez représenter cela dans une chaîne, vous devez utiliser base64 ou hex ... n'essayez pas d'utiliser leString(byte[], String)
constructeur.par exemple
la source
"UTF-8"
littéral dans Java 7+: une exception vérifiée de moins à se soucier.Je pense que la solution la plus simple consiste à utiliser Apache Common Codec :
la source
Une autre alternative est Guava qui a une suite d' utilitaires de hachage facile à utiliser . Par exemple, pour hacher une chaîne en utilisant SHA256 comme chaîne hexadécimale, vous feriez simplement:
la source
Exemple complet de hachage à chaîne comme une autre chaîne.
la source
Si vous utilisez Java 8, vous pouvez encoder le
byte[]
en faisantla source
la source
0xff
? Cela ne rapporte rien, n'est-ce pas?la source
J'ai tracé le code Apache
DigestUtils
etsha256
semble revenir par défaut aujava.security.MessageDigest
calcul. Apache n'implémente pas desha256
solution indépendante . Je cherchais une implémentation indépendante pour comparer avec lajava.security
bibliothèque. Pour info seulement.la source
C'était mon approche en utilisant Kotlin:
la source
[B@188363e
pas le mot de passe crypté. De plus, il semble différent chaque fois que cette fonction est appelée.return hash.fold("", { str, it -> str + "%02x".format(it)})
qui renvoie le mot de passe crypté et non l'objet lui-même.Voici une façon légèrement plus performante de transformer le résumé en une chaîne hexadécimale:
Quelqu'un connaît-il un moyen plus rapide en Java?
la source
Vous pouvez utiliser MessageDigest de la manière suivante:
la source
Dans Java 8
la source
En Java, la classe MessageDigest est utilisée pour calculer la valeur de hachage cryptographique. Cette classe fournit une fonction de hachage cryptographique ( MD5 , SHA-1 et SHA-256 ) pour trouver la valeur de hachage du texte.
Exemple de code pour l'utilisation de l'algorithme SHA-256.
la source
C'est ce que j'ai utilisé pour le hachage:
Sortie: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
la source
Vous pouvez appeler la méthode ci-dessus avec différents algorithmes comme ci-dessous.
Vous pouvez renvoyer ce lien pour une demande complète.
la source