Mesin Enigma adalah perangkat mekanis yang digunakan untuk encoding dan decoding pesan rahasia. Selama Perang Dunia II, mesin Enigma digunakan oleh militer Jerman untuk berkomunikasi dengan pasukan di lapangan, kapal perang, dan kapal selam. Kriptologis sekutu, yang bekerja dengan nama kode ULTRA, berhasil memecahkan sebagian besar sandi Enigma; ini memberi Sekutu sumber intelijen yang penting untuk upaya perang.
Mesin Enigma itu sendiri adalah mekanis, dan tampak seperti mesin tik. Setiap kali tombol ditekan, sinyal elektronik akan melewati serangkaian roda pengacakan yang dapat diputar, melalui plugboard, dan kemudian mundur ke arah yang berbeda. Karena setiap roda dapat diputar untuk mengubah jalur sinyal, berbagai macam kunci yang berbeda dimungkinkan, dan roda dapat dengan mudah diputar setiap kali kunci baru diperlukan. Roda diatur untuk berputar setiap kali tombol ditekan, membuat Enigma aman dari serangan frekuensi huruf; posisi awal roda juga diubah, seringkali beberapa kali sehari.
Secara teori, Enigma seharusnya aman terhadap semua jenis serangan brute force, karena ada terlalu banyak kemungkinan sandi untuk mencoba semuanya satu per satu. Versi Enigma yang lebih baru, seperti model empat rotor yang digunakan oleh U-boat Jerman, meningkatkan jumlah kombinasi lebih jauh. Meski begitu, dokumen kode yang ditangkap dan kesalahan manusia sering membuat kriptografer unggul, dan militer Polandia telah memecahkan kode komunikasi rahasia Jerman pada awal tahun 1932. Pekerjaan mereka akhirnya berhasil sampai ke Inggris dan Amerika, dan pemecahan kode berlanjut dengan banyak hal. keberhasilan sepanjang perang, meskipun upaya Jerman untuk membuat mesin lebih dan lebih kompleks.
Berhasil memecahkan kode Enigma diperlukan penemuan keteraturan, atau faktor yang diketahui, untuk mengurangi jumlah besar kemungkinan sandi. Beberapa teks sederhana, seperti “Heil Hitler,” sering muncul dalam pesan Jerman; ini memberikan petunjuk penting bagi cryptanalyst, yang dapat mencari melalui pesan terenkripsi dan melihat di mana frasa semacam itu mungkin muncul. Orang Jerman juga mengirimkan header enam huruf yang sederhana dan mudah dianalisis di awal pesan, seperti “EINEIN”, untuk memberikan lokasi roda sandi untuk sisa pesan. Ketika ruang kemungkinan kunci kode masih terlalu besar, beberapa komputer primitif dibangun, untuk menghitung ribuan kemungkinan secara otomatis; ini menjadi beberapa pekerjaan pertama yang dilakukan ke dalam komputasi tujuan umum.