it-swarm-id.com

Apa perbedaan antara MD5, SHA dan RSA?

Alat MD5 menghasilkan nilai heksadesimal. Dengan cara yang sama, apakah SHA dan RSA bersama-sama menghasilkan output heksadesimal (atau lainnya)?

Apa perbedaan antara MD5, SHA dan algoritma RSA?

43
Kars

Ini bukan tipe output. Hex adalah cara data diformat - karena semuanya bekerja pada data biner, hex sangat masuk akal.

Bagian penting adalah apa yang mereka lakukan dan bagaimana mereka melakukannya:

  • MD5 dan SHA adalah fungsi hash (SHA sebenarnya adalah keluarga fungsi hash) - mereka mengambil sepotong data, memadatkannya, dan membuat keluaran unik yang sesuai yang sangat sulit ditiru dengan yang berbeda sepotong data. Mereka tidak mengenkripsi apa pun - Anda tidak dapat mengambil MD5 atau SHA output dan "unhash" untuk kembali ke titik awal Anda. Perbedaan antara keduanya terletak pada apa algoritma yang mereka gunakan untuk membuat hash. Juga perhatikan bahwa MD5 sekarang rusak karena cara ditemukan untuk dengan mudah menghasilkan tabrakan dan tidak boleh digunakan atau dipercaya lagi.

  • RSA adalah algoritma enkripsi asimetris. Anda memiliki dua kunci (pribadi dan publik) dan Anda dapat menjalankan suatu fungsi dengan satu kunci (mengenkripsi atau mendekripsi) dan membalikkannya dengan kunci lainnya. Kunci mana yang Anda gunakan tergantung pada apakah Anda mencoba melakukan tanda tangan digital atau enkripsi.

57
bethlakshmi

MD5 adalah fungsi hash kriptografis. "SHA" adalah nama untuk keluarga fungsi hash; pertama-tama "SHA" berumur pendek yang diganti namanya menjadi "SHA-0", kemudian "SHA-1" didefinisikan (penjual terbaik). Kemudian, anggota keluarga baru ditambahkan, secara kolektif ditunjuk sebagai "SHA-2", dan terdiri dari SHA-224, SHA-256, SHA-384 dan SHA-512. Baru-baru ini, generasi SHA baru dirancang, disebut "SHA-3" tetapi juga "Keccak" (ini adalah kompetisi terbuka, Keccak menjadi nama kode salah satu kandidat, yang akhirnya menang).

Fungsi hash kriptografis adalah fungsi deterministik yang sepenuhnya ditentukan dan tidak menggunakan kunci rahasia. Dibutuhkan sebagai input pesan dengan panjang sewenang-wenang (aliran bit, ada bit) dan menghasilkan output ukuran tetap. Ukuran output tergantung pada fungsinya; itu adalah 128 bit untuk MD5, 160 bit untuk SHA-1, 256 bit untuk SHA-256 ... Semua orang dapat menghitung fungsi hash yang diberikan pada input yang diberikan, dan mereka semua mendapatkan hasil yang sama. Fungsi hash juga disebut intisari karena mereka entah bagaimana menghasilkan semacam "checksum" atau "ringkasan" dari input. Fungsi hash yang kuat harus sedemikian rupa sehingga tidak ada yang tahu cara "membalikkan" mereka atau bahkan menemukan dua input berbeda yang menghasilkan output yang sama. Yang terakhir disebut a collision dan merupakan keharusan matematis bahwa tumbukan ada (karena fungsi dapat menerima banyak input yang berbeda daripada yang dapat menghasilkan output yang berbeda), tetapi kami mengharuskan tidak layak untuk temukan genap satu tabrakan.

MD5 ternyata sangat rusak sehubungan dengan tabrakan (kami dapat menghasilkan tabrakan dalam beberapa detik kerja pada PC) dan SHA-0 juga rusak dalam hal itu; SHA-1 agak serpihan; keluarga SHA lainnya tampaknya kuat sejauh ini. Bagaimana fungsi hash mencapai resistensi tabrakan adalah sedikit keajaiban karena seluruh fungsi sepenuhnya diketahui, tanpa nilai rahasia; itu hanya mencampur data terlalu banyak untuk kriptografi terbaik untuk mengurai proses.

RSA adalah dua algoritma: an enkripsi asimetris algoritma dan tanda tangan digital algoritma . Meskipun kedua algoritma dibangun di atas jenis matematika yang sama, mereka cukup berbeda (banyak orang menggambarkan tanda tangan sebagai "enkripsi dengan kunci pribadi", yang merupakan analogi cacat dan paling membingungkan, jadi jangan lakukan itu). Kedua algoritma menggunakan keys, mis. Potongan data yang harus dirahasiakan. Kebetulan bahwa untuk tanda tangan RSA, apa yang ditandatangani bukan secara langsung pesan yang diberikan (urutan bit) tetapi a hash pesan: pesan pertama kali diproses dengan fungsi hash kriptografis seperti SHA-256, dan nilai hash kemudian digunakan. Ini dilakukan seperti itu karena matematika RSA hanya dapat menangani nilai-nilai ukuran sedang, beberapa ratus bit di terbaik. Fungsi hash kriptografis sedemikian rupa sehingga menandatangani hash sama baiknya dengan menandatangani data asli.

Dengan begitu, RSA dan fungsi hash kriptografis sering digunakan bersama; tetapi mereka sama sekali tidak sama.

Heksadesimal adalah cara untuk merepresentasikan urutan bit ke dalam urutan karakter: heksadesimal menggunakan digit dan huruf dari ' A 'to' F '; setiap karakter mengkodekan tepat empat bit ('0' mengkodekan '0000', '7' mengkodekan '0111', 'D' mengkodekan '1101' ...). Apa saja urutan bit (dan khususnya output dari fungsi hash) dapat dikonversi ke heksadesimal dan kembali. Heksadesimal populer karena mata dan otak manusia pandai membaca karakter, dan tidak membaca bit. Alat baris perintah yang menghitung fungsi hash kriptografis pada file biasanya menampilkan karakter heksadesimal karena alasan itu. Namun, tidak ada yang secara intrinsik mengikat fungsi hash dengan heksadesimal: segala sesuatu yang cocok di komputer dengan satu atau lain cara adalah urutan bit, dan dengan demikian dapat diterima heksadesimal; dan output fungsi hash hanyalah urutan bit, yang dapat dikodekan dalam berbagai cara, heksadesimal menjadi cara "tradisional" (walaupun Base64 juga sering dijumpai, terutama ketika berhadapan dengan basis data).

35
Thomas Pornin