Sandi (atau cipher) adalah algoritma untuk melakukan enkripsi (pengkodean) atau dekripsi (decoding). Ini adalah serangkaian langkah yang terdefinisi dengan baik yang dapat diikuti sebagai prosedur. Untuk menyandikan atau menyandikan adalah untuk mengubah informasi dari teks biasa menjadi sandi atau kode.

Dalam penggunaan non-teknis, sebuah 'sandi' sering kali berarti hal yang sama dengan 'kode'; tetapi dalam kriptografi, sandi dibedakan dari kode. Salah satu sumber abad ke-20 memberikan penjelasan ini: sandi adalah "sebuah metode di mana unit dasar penyembunyian adalah huruf. Sebagai perbandingan, kode adalah bentuk penyembunyian di mana unit dasarnya adalah kata". Pada akhir abad ini, "kode" dalam pengertian kriptografi ini menjadi langka. Kriptografi abad ke-21 kebanyakan mengenkripsi bitstream.

Kode-kode dioperasikan dengan cara mengganti sesuai dengan buku kode besar yang menghubungkan serangkaian karakter atau angka acak ke sebuah kata atau frasa. Misalnya, "UQJHSE" bisa menjadi kode untuk "Lanjutkan ke koordinat berikut".

Cipher digunakan untuk mengubah informasi asli ("plaintext") ke bentuk terenkripsi "ciphertext". Pesan ciphertext berisi semua informasi dari pesan plaintext, tetapi tidak dapat dibaca oleh manusia atau komputer tanpa mekanisme yang tepat untuk mendekripsinya. Untuk menyandikan atau menguraikan, Anda memerlukan "kunci". Dalam enkripsi, kunci menentukan transformasi tertentu dari plaintext ke ciphertext, atau sebaliknya selama dekripsi.

Berdasarkan jenis kunci yang digunakan, sandi-sandi dibagi menjadi:

  • algoritma kunci simetris (kriptografi kunci pribadi): kunci yang sama digunakan untuk enkripsi dan dekripsi, dan
  • Algoritma kunci asimetris (kriptografi kunci publik): dua kunci yang berbeda digunakan untuk enkripsi dan dekripsi.

Kata sandi dalam bahasa Perancis adalah cifre dan dalam bahasa Latin Abad Pertengahan cifra, dari bahasa Arab sifr, yang berarti 'nol'. Penggunaan zero dalam bahasa Inggris pertama kali diketahui pada tahun 1598.