Bagaimana saya bisa hash beberapa string dengan sha256
di Jawa? Adakah yang tahu perpustakaan gratis untuk ini?
210
Bagaimana saya bisa hash beberapa string dengan sha256
di Jawa? Adakah yang tahu perpustakaan gratis untuk ini?
Jawaban:
SHA-256 bukan "encoding" - ini adalah hash satu arah.
Anda pada dasarnya akan mengubah string menjadi byte (misalnya menggunakan
text.getBytes(StandardCharsets.UTF_8)
) dan kemudian hash byte. Perhatikan bahwa hasil hash juga akan menjadi data biner yang berubah-ubah, dan jika Anda ingin menyatakan bahwa dalam sebuah string, Anda harus menggunakan base64 atau hex ... jangan mencoba menggunakanString(byte[], String)
konstruktor.misalnya
sumber
"UTF-8"
literal di Java 7+: satu pengecualian yang diperiksa lebih sedikit untuk dikhawatirkan.Saya pikir solusi termudah adalah menggunakan Apache Common Codec :
sumber
Alternatif lain adalah Guava yang memiliki rangkaian utilitas Hashing yang mudah digunakan . Sebagai contoh, untuk hash string menggunakan SHA256 sebagai hex-string, Anda cukup melakukan:
sumber
Contoh lengkap hash to string sebagai string lain.
sumber
Jika Anda menggunakan Java 8, Anda dapat menyandikan
byte[]
dengan melakukansumber
sumber
0xff
? Tidak menghasilkan apa-apa, bukan?sumber
Saya menelusuri kode Apache
DigestUtils
dansha256
tampaknya kembali kejava.security.MessageDigest
perhitungan default . Apache tidak menerapkansha256
solusi independen . Saya mencari implementasi independen untuk dibandingkan denganjava.security
perpustakaan. Hanya FYI.sumber
Ini adalah pendekatan saya menggunakan Kotlin:
sumber
[B@188363e
:, bukan kata sandi yang dienkripsi. Plus, tampaknya berbeda setiap kali fungsi ini dipanggil.return hash.fold("", { str, it -> str + "%02x".format(it)})
yang mengembalikan kata sandi terenkripsi dan bukan objek itu sendiri.Berikut adalah cara yang sedikit lebih berkinerja untuk mengubah intisari menjadi string hex:
Adakah yang tahu cara yang lebih cepat di Jawa?
sumber
Anda dapat menggunakan MessageDigest dengan cara berikut:
sumber
Di Jawa 8
sumber
Di Jawa, kelas MessageDigest digunakan untuk menghitung nilai hashing kriptografis. Kelas ini menyediakan fungsi hash kriptografis ( MD5 , SHA-1 dan SHA-256 ) untuk menemukan nilai hash teks.
Contoh kode untuk menggunakan algoritma SHA-256.
sumber
Ini yang saya gunakan untuk hashing:
Output: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
sumber
Anda dapat memanggil metode di atas dengan algoritma yang berbeda seperti di bawah ini.
Anda dapat merujuk tautan ini untuk aplikasi lengkap.
sumber