Alat Dekripsi AES — Kompatibel OpenSSL & CryptoJS
Dekripsi AES online — GCM/CBC/CTR, frasa sandi atau kunci mentah, otomatis mendeteksi format OpenSSL & CryptoJS "U2FsdGVkX1". 100% di browser, kunci tidak pernah meninggalkan halaman.
Opsi lanjutan
Jangan pernah menggunakan ulang IV dengan kunci yang sama. Biarkan kosong untuk menghasilkan IV acak yang aman.
Cara Kerja Dekripsi AES
Dekripsi AES adalah kebalikan persis dari enkripsi: kunci simetris yang sama yang mengacak data menjalankan ronde-ronde cipher secara terbalik untuk memulihkan byte aslinya. Karena AES bersifat simetris, tidak ada 'kunci dekripsi' terpisah — Anda harus menyediakan kunci atau frasa sandi, mode, dan IV yang identik dengan yang dipakai untuk mengenkripsi. Dapatkan parameter yang benar dan plaintext-nya kembali byte demi byte; salah satu saja keliru dan Anda mendapat error atau data acak tak bermakna.
Untuk mendekripsi dengan benar, empat hal harus persis sesuai dengan enkripsi: kunci (atau frasa sandi ditambah pengaturan derivasi kuncinya), mode operasi (GCM, CBC, atau CTR), IV atau nonce, dan — untuk GCM — tag autentikasi. Lewatkan salah satunya dan hasilnya adalah entah error tegas (kegagalan autentikasi GCM, kegagalan padding CBC) atau data acak tak bermakna secara diam-diam (CTR, atau CBC dengan IV yang salah). Alat ini membaca salt, IV, dan tag dari ciphertext untuk Anda saat semuanya dikemas di dalamnya, dan mendiagnosis kegagalan saat ada yang tidak cocok.
Ciphertext datang dalam beberapa bentuk berbeda, dan alat ini memahami tiga di antaranya. Format 1 adalah tata letak frasa sandi mandiri milik kami: salt 16-byte, lalu IV, lalu ciphertext (dengan tag GCM ditambahkan di akhir dalam mode GCM) — dekripsi hanya dengan frasa sandi. Format 2 adalah tata letak kunci mentah: IV yang ditambahkan di depan ciphertext, atau ciphertext 'murni' di mana Anda menyertakan IV secara terpisah. Format 3 adalah tata letak OpenSSL, yang dihasilkan oleh perintah openssl enc dan oleh CryptoJS.
Format OpenSSL itu layak dikenali sekilas. Formatnya diawali dengan 8 byte ASCII Salted__, diikuti salt 8-byte lalu ciphertext, dan ketika semuanya di-encode Base64, byte-byte awal itu selalu muncul sebagai prefiks U2FsdGVkX1. Jadi jika ciphertext yang Anda terima diawali dengan U2FsdGVkX1, itu hampir pasti dihasilkan oleh openssl enc atau panggilan CryptoJS AES.encrypt(text, passphrase). CryptoJS menurunkan kuncinya dengan fungsi EVP_BytesToKey lawas menggunakan satu pass MD5, sementara openssl modern memakai PBKDF2 — itulah sebabnya memilih fungsi derivasi kunci yang tepat adalah kunci utama saat mendekripsi jenis ciphertext ini. Jika input Anda berupa Base64 dan Anda hanya ingin melihat byte mentahnya, dekoder Base64 kami akan menampilkannya. Untuk membuat ciphertext dalam format-format ini, gunakan alat enkripsi AES.
// AES-256-GCM decrypt with a passphrase (PBKDF2-HMAC-SHA256, 600,000 iterations).
// Identical code runs in the browser and in Node.js 20+ via Web Crypto.
async function aesGcmDecrypt(base64, passphrase) {
const enc = new TextEncoder();
const packed = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
const salt = packed.slice(0, 16), iv = packed.slice(16, 28); // salt(16) | iv(12)
const ct = packed.slice(28); // ciphertext + tag
const baseKey = await crypto.subtle.importKey(
'raw', enc.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
const key = await crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 600000, hash: 'SHA-256' },
baseKey, { name: 'AES-GCM', length: 256 }, false, ['decrypt']);
const plain = await crypto.subtle.decrypt(
{ name: 'AES-GCM', iv }, key, ct); // throws if the tag fails
return new TextDecoder().decode(plain); // recovered plaintext
} Fitur Utama
Otomatis mendeteksi output OpenSSL & CryptoJS
Tempelkan ciphertext yang diawali U2FsdGVkX1 dan alat ini mengenali format Salted__ serta menawarkan peralihan satu klik ke alur dekripsi yang sesuai, sehingga Anda tidak pernah bergulat dengan error jalan buntu.
Tiga fungsi derivasi kunci
Dekripsi lintas setiap generasi format openssl enc: PBKDF2 dengan jumlah iterasi kustom, EVP_BytesToKey dengan SHA-256, atau MD5 satu-pass lawas yang dipakai CryptoJS.
Menjelaskan mengapa dekripsi gagal
Alih-alih error generik, Anda mendapat diagnosis: kunci salah versus IV salah, kegagalan autentikasi GCM, error padding CBC, kontaminasi base64, atau 'ini tampak seperti ciphertext era-MD5, coba EVP-MD5'.
Perintah openssl setara ditampilkan langsung
Lihat perintah openssl enc -d persis yang mereproduksi dekripsi di command line, lengkap dengan jumlah iterasinya, sehingga Anda bisa memverifikasi hasilnya di luar browser.
Frasa sandi atau kunci mentah, GCM/CBC/CTR
Menangani ciphertext frasa sandi yang mandiri, ciphertext kunci mentah dengan IV yang ditambahkan di depan atau disertakan terpisah, dan ketiga mode Web Crypto.
100% di browser Anda
Ciphertext dan kunci diproses secara lokal dengan Web Crypto API dan tidak pernah diunggah — Anda bisa memverifikasinya dengan tab Network atau dengan beralih offline.
Contoh Dekripsi AES
Dekripsi ciphertext frasa sandi yang mandiri (GCM)
salt(16) ‖ iv(12) ‖ ciphertext ‖ tag(16), Base64 — dari halaman enkripsi
The quick brown fox jumps over the lazy dog.
Ini adalah kebalikan dari contoh GCM pada halaman enkripsi. Ambil string Base64 mandiri yang dihasilkannya untuk frasa sandi hunter2, tempelkan di sini dengan Mode GCM, Ukuran kunci 256, Jenis kunci Frasa sandi dan frasa sandi yang sama hunter2, dan kalimat aslinya akan kembali. Anda tidak perlu memasukkan salt atau IV secara terpisah — alat ini membaca salt 16-byte dan IV 12-byte dari awal string, menurunkan kunci dengan PBKDF2-HMAC-SHA256 (600.000 iterasi), dan memverifikasi tag GCM 128-bit yang ditambahkan di akhir sebelum mengembalikan teks apa pun. Klik Muat contoh di halaman enkripsi untuk menghasilkan string baru, lalu dekripsi di sini.
Dekripsi output OpenSSL / PBKDF2 sungguhan
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attack at dawn!
Ini adalah output openssl enc yang asli. Tempelkan, beralih ke mode OpenSSL (Mode CBC, Jenis kunci Frasa sandi), masukkan frasa sandi correct-horse, pilih fungsi derivasi kunci PBKDF2, dan atur iterasi ke 10.000 — plaintext-nya adalah Attack at dawn!. Prefiks U2FsdGVkX1 memberi tahu alat ini bahwa ini adalah format Salted__, dan salt 8-byte berada tepat setelah header itu di dalam Base64. Anda bisa mereproduksi dekripsi persisnya di command line: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A. Jika ciphertext serupa gagal dengan PBKDF2, kemungkinan itu dibuat oleh CryptoJS — ubah KDF ke EVP-MD5 dan coba lagi. Klik Muat contoh OpenSSL untuk mengisi nilai-nilai ini secara otomatis.
Cara Mendekripsi Ciphertext AES
- 1
Tempelkan ciphertext
Masukkan ciphertext Base64 atau Hex Anda ke input. Jika diawali dengan U2FsdGVkX1, alat ini menandainya sebagai format OpenSSL/CryptoJS dan menawarkan untuk beralih ke mode yang tepat.
- 2
Atur format dan mode
Untuk string mandiri dari alat ini, pertahankan mode Frasa sandi dan GCM/CBC/CTR yang sesuai. Untuk output OpenSSL/CryptoJS, terima peralihannya (CBC + frasa sandi). Untuk data kunci mentah, pilih Kunci mentah dan encoding-nya, dan sertakan IV jika tidak ada di depan ciphertext.
- 3
Pilih fungsi derivasi kunci
Dalam mode OpenSSL, pilih PBKDF2 (dan jumlah iterasinya), EVP-SHA256, atau EVP-MD5 agar sesuai dengan cara kunci diturunkan. EVP-MD5 adalah yang dipakai CryptoJS.
- 4
Masukkan frasa sandi atau kunci
Ketik frasa sandi yang persis, atau tempelkan kunci mentah yang persis sebagai hex atau Base64. Plaintext muncul di sebelah kanan segera setelah semuanya cocok.
- 5
Baca diagnosis jika gagal
Jika dekripsi error, panelnya menyebutkan kemungkinan penyebabnya — IV salah, kunci salah, error padding, kontaminasi base64, atau ketidakcocokan KDF — sehingga Anda bisa menyesuaikan satu pengaturan pada satu waktu alih-alih menebak-nebak.
Mengapa Dekripsi AES Gagal — dan Cara Memperbaikinya
Autentikasi GCM gagal
GCM menolak mengembalikan plaintext jika tag-nya tidak terverifikasi. Penyebabnya adalah frasa sandi atau kunci yang salah, mode yang salah, IV yang salah, atau ciphertext yang diubah/terpotong — GCM tidak bisa mengatakan yang mana. Periksa ulang masing-masing terhadap bagaimana data itu dienkripsi.
mode: CBC // but the data was encrypted with GCM => Authentication failed
mode: GCM, same passphrase and key size as encryption => plaintext
CBC: blok pertama yang acak berarti IV yang salah
Dalam CBC, IV hanya memengaruhi blok 16-byte pertama. Jika blok satu acak tak bermakna tapi sisanya ter-decode dengan bersih, IV Anda salah; jika semuanya acak tak bermakna, kuncinya salah.
iv: 00000000000000000000000000000000 (wrong IV) => first block corrupt, rest readable
iv: (the exact IV used to encrypt) => Attack at dawn!
Error padding CBC / PKCS#7
Error padding hampir selalu berarti kuncinya salah; itu juga bisa berarti ciphertext-nya rusak, terpotong, atau tidak di-padding PKCS#7. Pastikan seluruh ciphertext sudah disalin dan bahwa frasa sandi serta KDF-nya cocok.
passphrase: hunter3 // one character off => padding error
passphrase: hunter2 // exact => plaintext
Kontaminasi Base64 (atau hex)
Baris baru, spasi, atau tanda kutip pintar yang ikut tertempel bersama ciphertext merusak decoding. Alat ini otomatis menghapus whitespace, tetapi karakter yang hilang atau berlebih tetap membuatnya gagal.
“U2FsdGVkX1...” (curly quotes and trailing junk copied in)
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ= (clean Base64)
U2FsdGVkX1 terdeteksi tapi mode OpenSSL nonaktif
Jika input diawali dengan U2FsdGVkX1, Anda sedang melihat output Salted__ OpenSSL/CryptoJS, yang tidak akan terdekripsi sebagai string frasa sandi biasa. Alat ini menampilkan banner; klik Beralih ke mode OpenSSL dan pilih KDF-nya.
OpenSSL compatible: off input: U2FsdGVkX1... => cannot parse
OpenSSL compatible: on, KDF chosen => plaintext
Ketidakcocokan KDF (jebakan CryptoJS)
Ciphertext yang gagal dengan PBKDF2 atau SHA-256 tapi berhasil didekripsi dengan EVP-MD5 dihasilkan oleh CryptoJS atau openssl 1.0.2 ke bawah. Di command line, itu memerlukan -md md5.
KDF: PBKDF2 // CryptoJS ciphertext => padding error
KDF: EVP-MD5 // matches CryptoJS => plaintext
Yang Bisa Anda Lakukan dengan Dekripsi AES
- Dekripsi output openssl enc
- Baca blob Salted__ yang dihasilkan oleh openssl enc -aes-256-cbc tanpa harus membuka terminal: tempelkan Base64-nya, masukkan frasa sandinya, pilih KDF-nya, dan dapatkan plaintext Anda.
- Dekripsi ciphertext CryptoJS
- Pulihkan data dari aplikasi lama yang memakai CryptoJS AES.encrypt(text, passphrase). Pilih EVP-MD5 agar sesuai dengan derivasi kunci MD5 satu-pass-nya — langkah yang paling sering dilewatkan orang.
- Debug dekripsi yang terus gagal
- Saat kode Anda sendiri tidak bisa mendekripsi sesuatu, tempelkan di sini untuk mengisolasi apakah masalahnya ada pada kunci, IV, mode, encoding, atau KDF-nya, menggunakan panel diagnosis.
- Verifikasi round-trip enkripsi
- Konfirmasi bahwa ciphertext dari halaman enkripsi AES atau dari aplikasi Anda didekripsi kembali menjadi byte asli yang persis sama.
- Pahami ciphertext yang tidak dikenal
- Identifikasi sebuah format dari bentuknya — prefiks U2FsdGVkX1, atau prefiks berpanjang tetap yang mirip IV — dan cari tahu bagaimana itu dihasilkan sebelum Anda mencoba sebuah kunci.
Internal & Format Dekripsi AES
- Dekripsi GCM — terautentikasi
- GCM menghitung ulang tag 128-bit atas ciphertext dan membandingkannya sebelum mengembalikan plaintext apa pun; ketidakcocokan akan melempar error alih-alih membocorkan data yang rusak. Ia memakai IV 96-bit yang ada di depan. Kegagalan GCM berarti kunci, mode, IV, atau ciphertext-nya salah — cipher-nya tidak bisa memberi tahu yang mana, hanya bahwa autentikasi gagal.
- Dekripsi CBC — perhatikan blok pertama dan padding
- CBC memiliki dua tanda kegagalan yang berbeda. Jika hanya blok 16-byte pertama yang rusak dan sisanya terlihat benar, IV-nya salah. Jika semua blok acak tak bermakna, kuncinya salah. Error padding PKCS#7 biasanya berarti kuncinya salah, atau ciphertext-nya rusak atau terpotong. CBC tidak memiliki tag (tidak seperti konstruksi terautentikasi seperti HMAC), sehingga kunci yang salah bahkan bisa mendekripsi menjadi byte yang tampak masuk akal.
- Dekripsi CTR — diam saat error
- CTR tidak pernah melempar error: kunci yang salah hanya menghasilkan data acak tak bermakna, yang biasanya muncul sebagai error 'bukan UTF-8 yang valid' setelah byte-nya di-decode menjadi teks. Cocokkan counter/IV secara persis. Karena tidak ada pemeriksaan integritas, perlakukan output CTR mana pun yang belum Anda autentikasi secara terpisah dengan curiga.
- Tata letak ciphertext (F1 / F2 / F3)
- Format 1 (frasa sandi) adalah salt(16) lalu IV lalu ciphertext, dengan tag GCM 16-byte ditambahkan di akhir dalam mode GCM. Format 2 (kunci mentah) adalah IV lalu ciphertext, atau ciphertext murni dengan IV yang disertakan terpisah. Format 3 (OpenSSL) adalah header ASCII Salted__ lalu salt 8-byte lalu ciphertext. Mengetahui tata letak mana yang Anda miliki memberi tahu alat ini di mana salt dan IV berada, dan kunci mentah itu sendiri sebaiknya berasal dari CSPRNG — lihat generator kunci rahasia.
- Derivasi kunci: mencocokkan apa yang mengenkripsi data
- Untuk ciphertext frasa sandi yang mandiri, alat ini memakai PBKDF2-HMAC-SHA256 pada 600.000 iterasi. Untuk ciphertext OpenSSL/CryptoJS, Anda harus memilih KDF yang dipakai: PBKDF2 (default openssl -pbkdf2 adalah 10.000 iterasi — atur jumlah persis Anda), EVP_BytesToKey dengan SHA-256 (openssl 1.1+ tanpa -pbkdf2), atau EVP_BytesToKey dengan MD5 dan satu pass (CryptoJS dan openssl 1.0.2 ke bawah). Bug klasik 'tidak bisa didekripsi' adalah ciphertext CryptoJS atau openssl lawas yang dicoba dengan SHA-256 — beralih ke EVP-MD5 dan itu akan berhasil.
Praktik Terbaik Dekripsi AES
- Mulai dengan mengidentifikasi formatnya
- Sebelum menyentuh pengaturan, lihat ciphertext-nya. Prefiks U2FsdGVkX1 berarti OpenSSL/CryptoJS; string mandiri dari alat ini adalah format frasa sandi; blob murni biasanya memerlukan kunci mentah dan IV yang terpisah.
- Cocokkan fungsi derivasi kunci secara persis
- Untuk ciphertext OpenSSL/CryptoJS, KDF-nya sama pentingnya dengan frasa sandinya. Jika PBKDF2 gagal, coba EVP-MD5 (CryptoJS, openssl lawas); jumlah iterasinya juga harus cocok, bukan hanya algoritmenya.
- Tempelkan ciphertext dengan bersih
- Baris baru atau spasi yang tersasar dari proses menyalin bisa merusak Base64. Alat ini menghapus whitespace, tetapi jika decoding tetap gagal, periksa tanda kutip pintar, karakter yang hilang, atau salinan yang terpotong. Alat Base64 kami bisa membantu Anda memeriksa string yang mencurigakan.
- Perlakukan hasil kunci-salah secara jujur
- Dengan CTR atau CBC, kunci yang salah bisa menghasilkan byte alih-alih error. Jika outputnya terlihat seperti data acak tak bermakna atau gagal pemeriksaan UTF-8, kunci atau IV-nya salah — jangan percaya output yang tampak sebagian masuk akal.
- Jangan pernah mengirim ciphertext rahasia atau kunci ke server
- Inti dari mendekripsi di browser adalah tidak ada yang meninggalkan halaman. Hindari alat yang mengunggah data; alat ini memakai Web Crypto secara lokal, dan Anda bisa memverifikasinya dengan tab Network atau dengan beralih offline. AES-256 itu kuat — disetujui CNSA 2.0 untuk TOP SECRET — jadi jika Anda tidak bisa mendekripsi, masalahnya ada pada parameternya, bukan pada cipher-nya.
FAQ Dekripsi AES
Bisakah AES didekripsi tanpa kunci?
Bagaimana cara mendekripsi output openssl enc?
Apa arti U2FsdGVkX1 di awal sebuah ciphertext?
Bagaimana cara mendekripsi ciphertext CryptoJS?
GCM vs CBC — mengapa ciphertext saya bisa didekripsi dengan satu mode tapi tidak dengan mode lainnya?
Apakah ciphertext atau kunci saya diunggah saat saya mendekripsi di sini?
Apa perbedaan antara frasa sandi dan kunci mentah saat mendekripsi?
Alat Terkait
Lihat semua alat →Alat Enkripsi AES — GCM, CBC & CTR
Alat Keamanan
Enkripsi AES online gratis — AES-128/192/256, GCM/CBC/CTR, frasa sandi (PBKDF2) atau kunci mentah. Berjalan 100% di browser Anda; tidak ada yang diunggah.
Generator & Verifier Hash Bcrypt
Alat Keamanan
Buat dan verifikasi hash kata sandi bcrypt online — biaya yang dapat diatur, prefiks $2b$/$2a$/$2y$. 100% di browser Anda; kata sandi tidak pernah diunggah.
Generator HMAC & Verifikator Tanda Tangan
Alat Keamanan
Generator dan verifikator HMAC online gratis. Hitung HMAC-SHA256/SHA1/SHA384/SHA512 dengan kunci Teks, Hex, atau Base64 dan output Hex/Base64/Base64URL. 100% di browser Anda — kunci tidak pernah meninggalkan halaman.
JWT Decoder
Alat Keamanan
Dekode token JWT online dengan dekoder JWT gratis kami. Periksa header, payload, tanda tangan, kedaluwarsa, dan klaim secara instan. 100% browser — token Anda tidak meninggalkan perangkat. Tanpa pendaftaran, tanpa pelacakan.
JWT Encoder & Generator
Alat Keamanan
Generator & encoder JWT online gratis. Susun header dan payload, tandatangani dengan HS256, RS256, atau ES256 secara instan. 100% di browser — secret dan key Anda tidak pernah meninggalkan perangkat.
Generator JWT Secret Gratis — HS256/384/512
Alat Keamanan
Buat JWT secret kuat sesuai RFC untuk HS256/384/512 — 100% di browser, tak pernah dikirim ke server. base64url, base64, atau hex; salin untuk .env.