Skip to content

Alat Enkripsi & Dekripsi DES / 3DES

Enkripsi/dekripsi DES/3DES (2/3 kunci) dengan ECB/CBC dan PKCS#7 di browser. Panjang kunci (8/16/24 byte) divalidasi ketat — tanpa pemotongan senyap. Setiap hasil disertai perintah OpenSSL setara. Tidak ada yang diunggah.

Tanpa Pelacakan Berjalan di Browser Gratis
Enkripsi berjalan sepenuhnya di browser Anda — kunci dan data yang Anda masukkan tidak pernah keluar dari perangkat ini.

Teks sandi
Perintah OpenSSL yang setara
—

Perintah ini memuat kunci yang Anda masukkan.

Vektor uji DES dari FIPS 81

Dihitung saat build oleh engine yang dijalankan halaman ini — periksa implementasi DES Anda sendiri terhadapnya.
Kunci (DES tunggal) 0123456789abcdef
Teks polos 4e6f772069732074
Ciphertext (ECB, tanpa padding) 3fa40e8a984d4815
Engine DES/3DES mengasertikan vektor FIPS 81 dan telah diperiksa silang terhadap OpenSSL 3 (des-ede / des-ede3, dengan DES tunggal diverifikasi melalui ekuivalensi K‖K‖K) pada 3.000+ kombinasi acak di ECB dan CBC; perintah-perintah OpenSSL yang setara dijalankan di shell sungguhan untuk perbandingan. Default pustaka dikonfirmasi dengan menjalankannya dan membaca kode sumber; lihat alternatif. — Tim Keamanan Go Tools · Sep 28, 2026

Ditulis dan ditinjau oleh pengembang yang membangun alat-alat kriptografi. Setiap ciphertext dan jumlah byte di halaman ini dihitung oleh engine alat dan dijaga oleh tes.

Jawaban cepat DES

Panjang kunci DES

8 / 16 / 24 byte DES tunggal: 8 byte (56 bit efektif). 3DES: 16 byte (2-kunci) atau 24 byte (3-kunci). Materi kunci nominal 112/168 bit; kekuatan keamanan efektif NIST sekitar 80/112 bit (SP 800-57). Alat ini mendeteksi otomatis dari jumlah byte; panjang lain langsung error.

Vektor uji FIPS 81

3fa40e8a984d4815 Kunci 0123456789abcdef, plaintext "Now is t" (hex 4e6f772069732074): DES tunggal ECB tanpa padding menghasilkan 3fa40e8a984d4815.

Berapa panjang IV DES

8 byte 8 byte (16 digit hex), hanya untuk CBC — ECB tidak memakai. Berbeda dari IV 16 byte milik AES.

Apa itu PKCS5Padding milik Java

= PKCS#7 Untuk DES itu adalah PKCS#7 — algoritme padding yang sama dengan nama historisnya (PKCS#5 hanya mendefinisikan blok 8 byte, yang kebetulan milik DES).

Apakah DES aman saat ini

Hanya interop warisan Tidak. DES tunggal dipensiunkan 2005; 3DES didepresiasi dalam SP 800-131A Rev.2 (2023). Hanya untuk interop warisan — gunakan AES-256 untuk yang baru.

Apa itu DES dan 3DES (Data Encryption Standard)?

DES (Data Encryption Standard) adalah block cipher simetris yang diadopsi badan standar AS pada 1977, berdasarkan desain Lucifer milik IBM . Ia memproses blok 64 bit (8 byte) di bawah kunci nominal 64 bit dengan 56 bit efektif, melalui 16 ronde struktur Feistel.

3DES (TDEA, Triple DES) merangkai DES tiga kali untuk menambal kunci yang pendek: C = E_K3(D_K2(E_K1(P))). Pass di tengah adalah dekripsi sehingga K1=K2=K3 meruntuhkan rantai ke DES tunggal — pilihan kompatibilitas yang disengaja. Bentuk 2-kunci (K3=K1) memiliki sekitar 112 bit efektif dan merupakan bentuk paling umum di sistem perbankan warisan.

NIST memensiunkan DES tunggal pada 2005 (pengumuman FIPS 46-3) dan mendepresiasi 3DES dalam SP 800-131A Rev.2 (2023). Satu-satunya alasan keduanya masih ada adalah interop warisan: kliring perbankan, payment gateway, dan sistem Java/.NET/PHP era 90-an/2000-an masih menjalankan kriptografi era DES. Desain baru sebaiknya memakai AES-256.

# OpenSSL single DES (legacy provider)
openssl enc -des-ecb -provider legacy -provider default -K 0123456789abcdef -nopad

# 3-key 3DES CBC + PKCS#7 (default provider)
openssl enc -des-ede3-cbc -K <48 hex digits> -iv <16 hex digits> -base64 -A

Apa yang dilakukan alat DES ini

Validasi ketat ketiga panjang kunci

8/16/24 byte terdeteksi otomatis sebagai DES tunggal / 2-kunci / 3-kunci 3DES; selain itu langsung error. Berbeda dengan pemotongan diam-diam CryptoJS atau potong-dan-beri-peringatan openssl enc -K, kunci yang salah gagal dengan keras — sumber utama ketidakcocokan interop.

Vektor FIPS 81 dihitung saat build

Tabel vektor uji di bagian bawah diturunkan oleh engine yang sama saat build, sehingga crawler membaca nilai referensi tanpa menjalankan JS dan angka yang tercetak tidak mungkin berbeda dari yang interaktif.

Perintah OpenSSL yang setara

Setiap kombinasi parameter dipetakan ke perintah openssl enc yang mereproduksi hasilnya di OpenSSL 3, termasuk flag legacy-provider untuk DES tunggal. Kirimkan ke pihak lain untuk menemukan perbedaan parameter.

Dukungan plaintext GBK

getBytes() milik Java era DES pada JDK Windows Tiongkok menghasilkan GBK. Kedua arah di sini menerima GBK, sehingga plaintext Tionghoa dari sistem lama tidak perlu konversi terlebih dahulu.

Sepenuhnya di browser

TypeScript murni, tanpa dependensi, tanpa permintaan jaringan. Kunci dan plaintext tidak pernah keluar dari perangkat; berfungsi offline setelah termuat. Satu-satunya bentuk yang dapat diterima untuk alat yang menangani kunci.

Default pustaka DES di berbagai bahasa

Java (JCE)

"DES" bawaannya ECB + PKCS5Padding

Cipher.getInstance("DES") sama dengan DES/ECB/PKCS5Padding; "DESede" adalah 3DES tetapi hanya menerima kunci 24 byte — untuk 2-kunci, perluas sendiri K1‖K2 menjadi K1‖K2‖K1. PKCS5Padding adalah PKCS#7 untuk DES. Tanpa IV: enkripsi memilih yang acak (ambil via getIV()), dekripsi melempar "Parameters missing".

PHP (openssl_encrypt)

des-ede3-cbc / des-ede-cbc

Nama algoritmenya mengikuti OpenSSL: des-ede3 adalah ECB rangkap tiga, des-ede3-cbc adalah CBC. $options=0 (bawaan) menghasilkan teks Base64; OPENSSL_RAW_DATA untuk byte mentah. Kunci pendek diisi nol diam-diam; IV kosong memberi peringatan lalu mengenkripsi dengan IV nol.

OpenSSL 3 (openssl enc)

-des-ede3-cbc berfungsi secara bawaan

DES tunggal membutuhkan -provider legacy -provider default (sebagian build menghilangkan legacy sama sekali). -K/-iv menerima hex; PKCS#7 secara bawaan, -nopad untuk menonaktifkan. -K memotong kunci yang terlalu panjang dengan peringatan.

CryptoJS

Memotong panjang kunci ilegal diam-diam

Kunci mentah 8 byte (WordArray) berfungsi; panjang yang salah diisi nol atau dipotong diam-diam (4 byte diisi, 10 dipotong — tanpa error). String sebagai "kunci" menjalankan key derivation (MD5 + salt acak, output berprefiks Salted__, berbeda setiap kali). CBC tanpa IV adalah crash TypeError, bukan IV nol. TripleDES dengan kunci 8 byte diam-diam menjadi DES tunggal.

.NET

TripleDES bawaannya CBC + PKCS7

TripleDESCryptoServiceProvider: Mode=CBC, Padding=PKCS7, Key 16 atau 24 byte (DES menerima 8). .NET menolak kunci lemah (paritas dinormalkan dulu, lalu diperiksa terhadap tabel kunci lemah — kunci nol melempar pengecualian) sementara semua pustaka lain menerimanya. Perhatikan ini saat migrasi.

Go (crypto/des)

Pengaitan mode secara eksplisit

des.NewCipher memberi antarmuka blok mentah berkunci 8 byte; Anda sendiri yang membungkusnya dengan cipher.NewCBCEncrypter dan sejenisnya. 3DES adalah des.NewTripleDESCipher (24 byte). Panjang IV diperiksa lebih ketat daripada di kebanyakan bahasa.

Contoh enkripsi DES

Vektor uji FIPS 81 (DES tunggal, ECB, tanpa padding)

Kunci 0123456789abcdef, teks polos (hex) 4e6f772069732074
3fa40e8a984d4815

Teks polosnya adalah string ASCII "Now is t". Ini adalah vektor klasik FIPS 81, dan tabel di bagian bawah halaman dihitung saat build oleh engine yang sama — jika implementasi DES Anda tidak menghasilkan nilai ini untuk input ini, berarti ada bug.

3DES 2-kunci + CBC + PKCS#7: teks polos UTF-8 ke Base64

Kunci 0123456789abcdeffedcba9876543210 (16 byte), IV fedcba9876543210, teks polos: DES interop test: order 20260927-0042
QmnMoewSecp7Z7cr/w3/4AjM9lpFo1swc4dfLNH5UkgCwU5n7WIdKA==

Kunci 16 byte diperlakukan sebagai 3DES 2-kunci (K1 = 8 byte pertama, K2 = 8 byte terakhir, K3 = K1 — susunan EDE2). PKCS#7 pada blok 8 byte persis seperti yang disebut Java "PKCS5Padding" untuk DES: skema yang sama, hanya ukuran bloknya berbeda.

3DES 3-kunci + CBC + PKCS#7

Kunci 0123456789abcdef23456789abcdef010456789abcdef012 (24 byte), IV fedcba9876543210, teks polos: hello des
DhDQX9sfxKOirZ8eyqT7Jg==

Kunci 24 byte adalah susunan lengkap tiga kunci EDE3: C = E_K3(D_K2(E_K1(P))). Dari tiga panjang kunci, ini adalah satu-satunya bentuk tanpa padanan degenerasi — baik 2-kunci maupun K1=K2=K3 runtuh ke cipher yang lebih lemah.

Cara menggunakan alat enkripsi/dekripsi DES ini

  1. 1

    Pilih mode dan padding

    Untuk DES/ECB/PKCS5Padding milik Java pilih ECB + PKCS#7; untuk openssl enc -des-ede3-cbc pilih CBC + PKCS#7. Kode PHP mcrypt lama biasanya memakai Zero padding.

  2. 2

    Masukkan kunci (8/16/24 byte)

    Jumlah byte memilih cipher: 8 = DES tunggal, 16 = 3DES 2-kunci, 24 = 3DES 3-kunci. Pilih Hex, Teks, atau Base64; badge menampilkan jumlah byte sebenarnya dan bentuk yang terdeteksi. Panjang yang salah langsung error — tidak ada yang pernah dipotong.

  3. 3

    Untuk CBC, masukkan IV 8 byte

    ECB tidak butuh IV. IV harus tepat 8 byte — 16 digit hex, bukan 32 milik AES. Tombol Acak menghasilkan yang baru.

  4. 4

    Tempel dan dapatkan hasil langsung

    Mengenkripsi: masukkan teks (UTF-8/GBK) atau hex. Mendekripsi: tempel ciphertext Base64 atau hex. Hasil diperbarui saat Anda mengetik, dengan salin satu klik dan pemeriksaan bolak-balik lewat tombol Dekripsi ciphertext ini.

  5. 5

    Bawa perintah OpenSSL yang setara ke pihak lain

    Panel yang bisa dilipat memberikan perintah openssl enc yang mereproduksi hasil saat ini (termasuk kunci; perintah DES tunggal menyertakan -provider legacy -provider default). Kirimkan kepada pihak yang Anda interoperasikan — cara tercepat menuntaskan parameter siapa yang salah.

Mengapa dekripsi DES gagal

Panjang kunci bukan 8/16/24

"Kunci DES" 32 karakter hex itu 16 byte — itu 3DES 2-kunci, bukan DES tunggal. Sebaliknya, memberikan kunci 24 byte ke sistem yang hanya menerima 2-kunci juga gagal.

✗ Salah
Kunci 0123456789abcdeffedcba9876543210 (16 byte) dengan DES tunggal dipilih → error "kunci harus tepat 8 byte"
✓ Benar
Kunci yang sama sebagai 16 byte (3DES 2-kunci) → terdekripsi bersih

Kebingungan nama PKCS5 vs PKCS7

Java menulis "PKCS5Padding" untuk DES tetapi menjalankan algoritme PKCS#7 (PKCS#5 hanya pernah mendefinisikan padding blok 8 byte, yang sama dengan blok DES, jadi namanya menempel). Memilih None atau Zero terhadap ciphertext JCE selalu gagal.

✗ Salah
Ciphertext JCE `DES/ECB/PKCS5Padding` didekripsi sebagai "tanpa padding" → sampah di akhir atau error padding
✓ Benar
Pilih PKCS#7 (Java PKCS5Padding) → output bersih

Menyalin panjang IV milik AES (16 byte)

Blok DES 8 byte, jadi IV-nya juga 8 byte. Menempelkan IV 32 digit hex dari kode AES gagal di pemeriksaan panjang; IV 8 digit hex diisi nol dan terbaca salah.

✗ Salah
IV 00000000000000000000000000000000 (32 digit hex) → error "IV harus 8 byte"
✓ Benar
IV 0000000000000000 (16 digit hex) → diterima

IV CBC salah: hanya blok 8 byte pertama yang jadi sampah

Mendekripsi ciphertext multi-blok dengan IV salah tidak menghasilkan error — hanya blok 8 byte pertama yang jadi sampah, sisanya terdekripsi baik-baik saja (IV hanya sampai ke blok satu, dan pemeriksaan padding berada di blok terakhir). Saat melihat "beberapa karakter pertama kacau, sisanya baik", periksa IV sebelum kunci; ciphertext satu blok justru merusak padding dan melempar bad decrypt.

✗ Salah
Ciphertext multi-blok + IV salah → 8 byte pertama kacau, sisanya normal — salah dibaca sebagai "kunci salah"
✓ Benar
Ubah hanya IV (kunci tak disentuh) → blok pertama kembali, memastikan IV yang bermasalah

openssl enc -K memotong kunci panjang diam-diam

-K hanya menyimpan byte yang dibutuhkan dan mencetak peringatan satu baris yang ditelan skrip. Ketika pihak lain bilang "kuncinya 48 digit hex ini" tetapi sebenarnya mengenkripsi dengan 16 pertama, mendekripsi dengan kunci penuh gagal.

✗ Salah
Shell: `-K <49 digit hex>` → "hex string is too long, ignoring excess" hilang dalam pipeline
✓ Benar
Gunakan perintah setara alat ini untuk menghasilkan `-K` dengan panjang benar, lalu bandingkan byte kunci dengan pihak lain

DES tunggal gagal di OpenSSL 3 dengan "unsupported"

Provider bawaan OpenSSL 3 tidak punya des-ecb/des-cbc; menjalankannya langsung melempar digital envelope routines::unsupported. Tambahkan -provider legacy -provider default, atau gunakan des-ede3 dengan K‖K‖K (secara aljabar DES tunggal).

✗ Salah
openssl enc -des-ecb -K … → Error: unsupported
✓ Benar
openssl enc -des-ecb -provider legacy -provider default -K … (atau des-ede3-ecb -K <K‖K‖K>)

Kapan Anda perlu enkripsi DES online

Debugging kriptografi pesan sistem warisan
Kliring perbankan, perhitungan MAC gateway POS, dan enkripsi antarmuka ERP lama masih memakai DES/3DES. Tempel pesan dan kunci di sini untuk memeriksa "apakah kuncinya benar, mode apa, padding apa" tanpa menyiapkan lingkungan Java atau PHP.
Migrasi kode warisan Java / PHP / .NET
Bandingkan output Cipher.getInstance("DES/ECB/PKCS5Padding") atau openssl_encrypt(..., 'des-ede3-cbc', ...) dengan alat ini byte demi byte sebelum beralih. Bentuk 2-kunci/3-kunci dideteksi dari panjang kunci, tidak ada yang perlu ditebak.
Audit keamanan dan pengajaran
Mendemonstrasikan kebocoran pola ECB (blok plaintext sama → blok ciphertext sama), memverifikasi degenerasi 3DES (K1=K2=K3 runtuh ke DES tunggal), dan memeriksa vektor FIPS 81 — materi standar dalam laporan pentest dan mata kuliah kriptografi.
Membuat ciphertext contoh untuk dokumentasi
Ketika wiki internal atau dokumen API membutuhkan contoh yang dapat direproduksi, hitung di sini dengan kunci dan IV tetap — pembaca dapat memverifikasinya dengan perintah OpenSSL yang setara, dan tidak ada data produksi yang dibawa-bawa.

DES / 3DES dan mode block cipher dijelaskan

Blok dan kunci
DES memproses blok 64 bit melalui 16 ronde Feistel, masing-masing dengan subkunci 48 bit yang diturunkan dari kunci induk 56 bit melalui permutasi kompresi PC-1/PC-2 dan rotasi terjadwal. Delapan S-box adalah satu-satunya sumber non-linearitas; kriteria desainnya tidak pernah dipublikasikan secara lengkap.
Susunan EDE 3DES
C = E_K3(D_K2(E_K1(P))). Dekripsi di tengah membuat K1=K2=K3 runtuh ke DES tunggal — tujuan kompatibilitas ke belakang. Bentuk 2-kunci memiliki 2×56=112 bit materi kunci nominal, tetapi kekuatan keamanan efektifnya sekitar 80 bit menurut NIST (SP 800-57 Part 1); bentuk 3-kunci nominalnya 168 bit dengan kekuatan 112 bit (tidak disarankan).
ECB dan CBC
ECB mengenkripsi blok secara independen — blok plaintext yang sama menghasilkan blok ciphertext yang sama, kebocoran pola yang terlihat dan membuat blok 8 byte lebih buruk dari AES-ECB. CBC mencampur blok ciphertext sebelumnya (IV untuk blok pertama) ke plaintext sebelum mengenkripsi, dan merupakan pilihan utama perbankan era DES. Kedua mode menghasilkan ciphertext yang kelipatan 8 byte.
Padding: PKCS#7 / Zero / None
PKCS#7 menambahkan n byte bernilai n untuk bagian yang kurang (kurang 3 → 03 03 03) dan mengisi blok penuh dengan satu blok ekstra utuh — inilah "PKCS5Padding" milik Java untuk DES. Zero padding mengisi dengan 0x00 dan bersifat lossy ketika plaintext memang berakhir dengan 0x00. None menuntut kelipatan tepat 8.
Legacy provider OpenSSL 3
OpenSSL 3 memindahkan DES tunggal ke legacy provider yang mati secara bawaan: CLI membutuhkan -provider legacy -provider default, dan sebagian build (termasuk OpenSSL bawaan Node) menghilangkannya sama sekali. 3DES (des-ede/des-ede3) tetap di provider bawaan. Engine pure-TS alat ini tidak terpengaruh.

Menggunakan DES dengan benar (interop warisan)

Jangan pernah pakai DES untuk sistem baru, dalam bentuk apa pun
56 bit DES tunggal bisa dipecahkan dengan brute force; blok 64 bit membawa batas birthday Sweet32 (CVE-2016-2183), dan NIST membatasi satu paket kunci pada ≈8 MB (2²⁰ blok) plaintext; 2-kunci Disallowed, enkripsi 3-kunci setelah 2023. Gunakan AES-256 untuk yang baru. Alat ini ada untuk membaca dan memigrasikan sistem warisan dengan aman.
Dalam interop warisan, identik-byte dulu
Saat menyentuh sistem lama, pertama reproduksikan ciphertext parameter lama di sini byte demi byte, baru ubah kode. Konfirmasikan panjang kunci, mode, padding, dan sumber IV (tetap vs acak, header vs di luar jalur) sebelum mengganti algoritme.
Jangan pakai ulang IV, bahkan di sistem warisan
Memakai ulang IV CBC dengan kunci yang sama membuka hubungan antara blok-blok pertama dari dua plaintext. Jika protokol warisan mewajibkan IV tetap, catat sebagai cacat dalam daftar migrasi — jangan diwariskan sebagai konvensi.
Jauhkan kunci dari kode sumber
Sistem era DES rutin menanamkan kunci dalam kode sumber atau konfigurasi sebagai teks polos. Saat mengauditnya, letakkan "bagaimana kunci disimpan" di samping "algoritme apa" dalam laporan — pada sebagian besar pelanggaran, yang pertama adalah lubang sebenarnya.

FAQ enkripsi/dekripsi DES

Dekripsi DES gagal dengan "bad decrypt" atau error padding — apa yang harus saya periksa?
Dekripsi mengharuskan setiap parameter cocok dengan sisi yang mengenkripsi: byte kunci, panjang kunci (8/16/24), mode (ECB/CBC), IV, padding, dan apakah ciphertext-nya hex atau Base64. Dua jebakan paling umum: panjang kunci tidak cocok ("kunci DES" 32 karakter hex itu 16 byte — itu 3DES 2-kunci, bukan DES tunggal) dan kebingungan nama padding (PKCS5Padding milik Java ADALAH PKCS#7 untuk DES — jangan pilih None). Panel yang bisa dilipat di sebelah kanan menampilkan perintah OpenSSL yang setara untuk pengaturan saat ini; mengirimkannya ke pihak lain adalah cara tercepat menemukan perbedaannya.
Berapa panjang kunci DES? Dan 3DES?
DES tunggal: 64 bit nominal (8 byte, 56 efektif — satu bit per byte adalah bit paritas). 3DES hadir dalam dua bentuk: 2-kunci (16 byte, K1‖K2 dengan K3=K1) dan 3-kunci (24 byte, K1‖K2‖K3). Materi kunci nominalnya 112/168 bit, tetapi kekuatan keamanan efektif menurut NIST (SP 800-57 Part 1 Rev.5 tabel 2) hanya sekitar 80 dan 112 bit — dan bentuk 3-kunci pun sudah tidak disarankan. Alat ini mengenali bentuknya dari jumlah byte; selain 8/16/24 langsung error — CryptoJS dan openssl enc -K justru memotong diam-diam atau mengisi nol, penyebab utama kegagalan interop.
Apa itu IV dan berapa panjangnya untuk DES?
IV adalah nilai 8 byte yang dicampur CBC ke blok pertama; ECB tidak menggunakannya. Panjangnya harus tepat 8 byte (16 digit hex atau 8 karakter ASCII). Perhatikan bahwa IV DES 8 byte sedangkan IV AES 16 — menyalin panjang IV dari AES langsung gagal. Jangan pernah menggunakan IV yang sama dengan kunci yang sama.
DES/ECB/PKCS5Padding milik Java padanan dengan apa di alat ini?
Mode ECB + padding PKCS#7. Di JCE, "PKCS5Padding" untuk DES menjalankan algoritme PKCS#7 generik — PKCS#5 hanya pernah mendefinisikan padding untuk blok 8 byte, yang kebetulan milik DES. Output dari Java Cipher.getInstance("DES/ECB/PKCS5Padding") dapat didekripsi di sini dengan ECB + PKCS#7 dan kunci DES tunggal 8 byte. ⚠️ 3DES milik Java (DESede) hanya menerima kunci 24 byte — untuk bentuk 2-kunci Anda harus memperluas K1‖K2 menjadi K1‖K2‖K1 sendiri.
Bagaimana pemetaan nama algoritme des-ede3 milik PHP?
PHP meminjam nama-nama OpenSSL: des-ede3-cbc adalah 3DES 3-kunci + CBC, des-ede3-ecb adalah 3-kunci + ECB; des-ede-cbc adalah bentuk 2-kunci. Kunci 24 byte memilih 3-kunci, 16 byte memilih 2-kunci.
Apa itu bit paritas dalam kunci DES? Apakah diperiksa?
Bit terendah setiap byte kunci didefinisikan sebagai bit paritas, jadi kunci 56 bit yang sebenarnya berada di dalam 64 bit. FIPS 46-3 tidak mewajibkan pemeriksaannya — OpenSSL, Java, dan alat ini mengabaikannya; 8 byte apa pun berfungsi, dan mengubah bit paritas tidak mengubah ciphertext. .NET adalah pengecualian: ia menormalkan paritas terlebih dahulu lalu memeriksa tabel kunci lemah, sehingga kunci nol dan kunci lemah lainnya ditolak .NET sementara semua pustaka lain mengenkripsinya dengan senang hati — jebakan yang hanya muncul saat memigrasikan kunci uji dari Java/OpenSSL ke .NET.
Apa yang terjadi pada 3DES saat K1 = K2?
Pada 3DES 2-kunci, K3 selalu sama dengan K1; jika K1 = K2 juga, seluruh rantai EDE runtuh ke DES tunggal: E_K(D_K(E_K(P))) = E_K(P). Hal yang sama terjadi ketika ketiga komponen 8 byte dari kunci 24 byte identik. Alat ini tetap mengenkripsi (interop dulu), tetapi kekuatan sebenarnya menjadi DES tunggal 56 bit, bukan 3DES.
Apakah DES masih aman?
Tidak — hanya untuk interop warisan. NIST menarik DES tunggal pada 19-05-2005 (kunci 56 bit bisa dipecahkan dengan brute force; Deep Crack milik EFF melakukannya dalam 56 jam pada 1998, 22 jam setahun kemudian dengan distributed.net). SP 800-131A Rev.2 mencantumkan enkripsi TDEA 2-kunci sebagai Disallowed, dan enkripsi 3-kunci sebagai Disallowed setelah 2023-12-31 (dekripsi tetap "Legacy use", dipertahankan hanya untuk membaca data historis); SP 800-67 sendiri ditarik pada 2024-01-01. Blok kecil 64 bit juga membawa batas birthday kelas Sweet32 (CVE-2016-2183) — NIST membatasi satu paket kunci pada 2²⁰ blok (≈8 MB) plaintext. Gunakan AES-256 untuk apa pun yang baru. Alat ini ada karena kliring perbankan, payment gateway, dan sistem Java/.NET lama masih menjalankan pesan era DES — memperbaikinya dimulai dari bisa membacanya.
Mengapa hasil 3DES saya berbeda dari Java/PHP?
Periksa sesuai urutan tingkat kejadian: ① panjang kunci — "kunci DES 32-hex" milik pihak lain itu 16 byte (3DES 2-kunci), Anda mendekripsi sebagai DES tunggal; ② mode — "DES" polos milik Java bawaannya ECB, nama OpenSSL tanpa akhiran mode seperti des-ede3/des-ede adalah ECB (alias CBC adalah -des3); openssl_encrypt milik PHP mewajibkan nama algoritma eksplisit — yang membingungkan adalah output bawaannya berupa teks Base64, bukan byte mentah; ③ padding — mcrypt PHP lama sering memakai Zero padding, JCE memakai PKCS#5/#7; ④ encoding — hex vs Base64, serta huruf besar/kecil; ⑤ jebakan password CryptoJS — memberikan string sebagai "kunci" membuatnya menjalankan key derivation (MD5 + salt acak, output berprefiks Salted__, berbeda setiap kali), yang sama sekali bukan kunci mentahnya — penyebab utama "kode sama, hasil berbeda setiap eksekusi". Alat ini memungkinkan Anda mengubah masing-masing; perintah OpenSSL yang setara di sebelah kanan dapat dikirim ke pihak lain untuk mereproduksi.
ECB atau CBC — mana yang harus dipakai?
Apa pun yang disyaratkan sistem yang Anda hadapi — interop warisan tidak punya hak suara. Jika Anda boleh memilih, selalu CBC dengan IV acak: ECB mengenkripsi blok plaintext yang sama menjadi blok ciphertext yang sama, dan blok kecil 8 byte milik DES membocorkan pola lebih terlihat lagi daripada AES-ECB. Protokol perbankan era DES memakai keduanya; periksa dulu dokumen protokolnya.
Apakah ini bekerja offline? Apakah data saya diunggah?
Semua komputasi terjadi di browser Anda (TypeScript murni, tanpa dependensi, tanpa permintaan jaringan); kunci dan plaintext tidak pernah keluar dari perangkat. Setelah halaman termuat Anda bisa offline dan terus bekerja. Itulah satu-satunya bentuk yang dapat diterima untuk alat yang menangani kunci.
3DES 2-kunci atau 3-kunci — mana yang lebih umum di sistem warisan?
2-kunci (16 byte) lebih umum: bank dan industri pembayaran menggelar perangkat keras berkunci 16 byte demi kompatibilitas, dan SP 800-67 menetapkan tanggal deprekasi terpisah (lebih awal) untuknya. Jadi "kunci 3DES" 32 karakter hex kemungkinan besar adalah bentuk 2-kunci. Alat ini mendeteksi bentuknya dari jumlah byte secara otomatis.