Halo, Habr! Saya mempersembahkan kepada Anda terjemahan artikel ketiga "Java MessageDigest" oleh Jakob Jenkov dari serangkaian artikel untuk pemula yang ingin mempelajari dasar-dasar kriptografi di Jawa.
Daftar isi:
- Kriptografi
- Sandi
- Pesan pesan
- Mac
- Tanda tangan
- Keypair
- Keygenerator
- KeyPairGenerator
- Keystore
- Keytool
- Sertifikat
- Pabrik Sertifikat
- CertPath
Java MessageDigest
MessageDigest kelas Java mewakili fungsi hash kriptografis yang dapat menghitung intisari pesan dari data biner. Ketika Anda menerima satu set data terenkripsi, Anda tidak dapat memastikan bahwa itu tidak berubah selama transportasi. Intisari pesan membantu mengatasi masalah ini.
Untuk menentukan apakah data terenkripsi telah dimodifikasi selama transportasi, pengirim harus menghitung pesan intisari dari data dan mengirimkannya bersama dengan data. Sisi lain, menerima data terenkripsi dan intisari pesan, dapat menghitung ulang intisari pesan dari data dan memeriksa apakah intisari pesan yang dihitung cocok dengan intisari pesan yang diterima dengan data. Jika dua pesan dicerna, ada kemungkinan data terenkripsi tidak berubah selama transportasi.
Ada beberapa kondisi yang harus dipenuhi agar pesan intis berguna sebagai mekanisme deteksi perubahan. Namun, kondisi yang tepat adalah bagian dari teori kriptografi yang tidak dibahas dalam artikel ini, tetapi hanya menjelaskan cara menggunakan Java untuk menerima intisari pesan di kelas MessageDigest.
Membuat instance dari MessageDigest
Untuk membuat instance kelas MessageDigest, metode getInstance () statis dari kelas MessageDigest dipanggil. Berikut adalah contoh membuat instance dari MessageDigest:
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
Parameter string yang diteruskan ke metode getInstance () menentukan algoritma digest yang digunakan untuk pesan tertentu.
Algoritma Pesan Intisari
Java Cryptography API mendukung algoritma intisari pesan berikut (penyedia kriptografi eksternal dapat mendukung lebih banyak):
- MD2
- MD5
- SHA-1
- SHA-256
- SHA-384
- SHA-512
Tidak semua algoritma ini sama-sama aman. Pada saat penulisan, disarankan agar Anda menggunakan SHA-256 atau lebih tinggi untuk mendapatkan tingkat keamanan setinggi mungkin.
Perhitungan Intisari Pesan
Dengan membuat instance MessageDigest, Anda dapat menggunakannya untuk menghitung intisari pesan. Jika Anda memiliki satu blok data untuk menghitung intisari pesan, gunakan metode intisari () . Inilah yang tampak seperti perhitungan intisari pesan dari satu blok data:
byte[] data1 = "0123456789".getBytes("UTF-8"); MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); byte[] digest = messageDigest.digest(data1);
Jika ada beberapa blok data yang akan disertakan dalam intisari pesan yang sama, panggil metode pembaruan () dan akhiri dengan ajakan untuk intisari () . Begini cara perhitungan intisari pesan dari beberapa blok data:
byte[] data1 = "0123456789".getBytes("UTF-8"); byte[] data2 = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(data1); messageDigest.update(data2); byte[] digest = messageDigest.digest();