Rozglądając się tutaj, a także ogólnie po Internecie, znalazłem Bouncy Castle . Chcę użyć Bouncy Castle (lub innego darmowego narzędzia) do wygenerowania SHA-256 Hash of a String w Javie. Patrząc na ich dokumentację, nie mogę znaleźć żadnych dobrych przykładów tego, co chcę robić. Czy ktoś tutaj może mi pomóc?
java
bouncycastle
sha256
jce
knpwrs
źródło
źródło
digest
stan wewnętrzny jest resetowany; więc kiedy wywołasz go ponownie bez wcześniejszej aktualizacji, otrzymasz skrót pustego ciągu.digest
do String?Jest to już zaimplementowane w bibliotekach wykonawczych.
W środowisku JEE6 + można by również wykorzystać JAXB DataTypeConverter :
źródło
Niekoniecznie potrzebujesz biblioteki BouncyCastle. Poniższy kod pokazuje, jak to zrobić za pomocą funkcji Integer.toHexString
Specjalne podziękowania dla użytkownika1452273 z tego postu: Jak haszować jakiś ciąg z sha256 w Javie?
Tak trzymaj !
źródło
Używając hashcodes z dowolnym dostawcą jce, najpierw próbujesz uzyskać instancję algorytmu, a następnie aktualizujesz ją danymi, które chcesz zaszyfrować, a kiedy skończysz, wywołujesz skrót, aby uzyskać wartość skrótu.
możesz użyć skrótu, aby uzyskać wersję zakodowaną w formacie base64 lub szesnastkowym, w zależności od potrzeb
źródło
digest()
tablicy bajtów wejściowych, pomijającupdate()
?String.getBytes()
bez określenia kodowania. Obecnie ten kod może dawać różne wyniki na różnych platformach - co jest nieprawidłowym zachowaniem dla dobrze zdefiniowanego skrótu.Java 8: Base64 dostępna:
źródło
Przypuszczam, że używasz stosunkowo starej wersji Java bez SHA-256. Musisz więc dodać dostawcę BouncyCastle do już podanych „dostawców zabezpieczeń” w Twojej wersji java.
źródło
źródło
return Hex.encodeHexString(digest)
zamiast tego.Korzystanie z języka Java 8
źródło
To zadziała z następującym pakietem „org.bouncycastle.util.encoders.Hex”
Jest w słoiku z zamkiem.
źródło