Jak mogę haszować jakiś ciąg znaków sha256
w Javie? Czy ktoś wie o darmowej bibliotece do tego celu?
210
Jak mogę haszować jakiś ciąg znaków sha256
w Javie? Czy ktoś wie o darmowej bibliotece do tego celu?
Odpowiedzi:
SHA-256 nie jest „kodowaniem” - to skrót jednokierunkowy.
Zasadniczo konwertujesz ciąg znaków na bajty (np. Używając
text.getBytes(StandardCharsets.UTF_8)
), a następnie mieszasz bajty. Zauważ, że wynikiem skrótu byłyby również dowolne dane binarne, a jeśli chcesz reprezentować to w ciągu, powinieneś użyć base64 lub hex ... nie próbuj używaćString(byte[], String)
konstruktora.na przykład
źródło
"UTF-8"
literału w Javie 7+: jeden sprawdził wyjątek, o który trzeba się martwić.Myślę, że najłatwiejszym rozwiązaniem jest użycie wspólnego kodeka Apache :
źródło
Inną alternatywą jest Guava, która ma łatwy w użyciu zestaw narzędzi do haszowania . Na przykład, aby zaszyfrować ciąg za pomocą SHA256 jako ciągu szesnastkowego, po prostu wykonaj:
źródło
Pełny przykładowy skrót do łańcucha jako kolejny ciąg.
źródło
Jeśli używasz języka Java 8, możesz go zakodować
byte[]
, wykonującźródło
źródło
0xff
? Nic nie daje, prawda?źródło
Prześledziłem kod Apache
DigestUtils
isha256
wydaje się, że domyślnie powrócił dojava.security.MessageDigest
obliczeń. Apache nie implementuje niezależnegosha256
rozwiązania. Szukałem niezależnej implementacji do porównania zjava.security
biblioteką. Tylko dla ciebie.źródło
Takie było moje podejście do Kotlina:
źródło
[B@188363e
zaszyfrować hasło w Android Studio, a Twój kod zwraca coś takiego:, a nie zaszyfrowane hasło. Ponadto wydaje się, że jest różna przy każdym wywołaniu tej funkcji.return hash.fold("", { str, it -> str + "%02x".format(it)})
który zwraca zaszyfrowane hasło, a nie sam obiekt.Oto nieco bardziej wydajny sposób na przekształcenie skrótu w ciąg szesnastkowy:
Czy ktoś wie o szybszym sposobie w Javie?
źródło
Możesz użyć MessageDigest w następujący sposób:
źródło
W Javie 8
źródło
W Javie klasa MessageDigest służy do obliczania wartości skrótu kryptograficznego. Ta klasa zapewnia kryptograficzną funkcję skrótu ( MD5 , SHA-1 i SHA-256 ) w celu znalezienia wartości skrótu tekstu.
Przykład kodu do użycia algorytmu SHA-256.
źródło
Właśnie tego użyłem do mieszania:
Wyjście: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
źródło
Możesz wywołać powyższą metodę za pomocą różnych algorytmów, takich jak poniżej.
Możesz skorzystać z tego linku, aby uzyskać kompletną aplikację.
źródło