Dalam kriptografi, **sandi substitusi** adalah jenis metode enkripsi dimana setiap satuan pada teks terang digantikan oleh teks tersandi dengan sistem yang teratur; suatu "satuan" dapat berarti satu huruf (paling umum), pasangan huruf, suku kata, kata, dan sebagainya. Sang penerima pesan baru dapat membaca pesan tersebut setelah melakukan substitusi balik terlebih dahulu. Pada sandi substitusi, satuan-satuan pada teks terang diubah namun susunannya tetap. Kebalikannya adalah sandi transposisi, dimana satuan-satuan teks terang susunannya diacak sedemikian rupa sehingga tidak dapat terbaca, tetapi tidak mengubah atau menyubstitusi huruf-huruf tersebut.

Sandi substitusi juga dikelompokkan menjadi berbagai jenis. Jika sandi tersebut menyubstitusi huruf demi huruf, maka ia disebut *sandi substitusi sederhana*; jika menyubstitusi dengan urutan yang lebih besar disebut *sandi substitusi poligraf*. Sebuah *sandi substitusi monoalfabetik* menggunakan pola substitusi yang tetap di seluruh pesan (misal: sandi Caesar), sedangkan *sandi substitusi polialfabetik* menggunakan substitusi yang berbeda-beda sepanjang pesan (misal: sandi Vigenère).

Substitusi sederhana
--------------------

Substitusi satu huruf secara terpisah (substitusi sederhana) dapat dilakukan dengan menuliskan seluruh alfabet pada urutan tertentu untuk menggambarkan penggantian / substitusi. Alfabet sandi dapat digeser (sandi Caesar) atau dibalik (sandi Atbash), maupun diacak dengan lebih rumit.

Sistem
------

Pada cipher-substitusi, enkripsi (pengkodean) dilakukan dengan cara mengganti setiap karakter dalam **plaintext**, yaitu dari **alfabet A** dengan **alfabet C**.

Misalkan jika dipunyai dalam suatu alfabet A: a1, a2, a3, a4 …. an’ maka substitusinya adalah: f(a1), f(a2), ... f(an), di mana f adalah: A → C

Ini didasarkan pada penggunaan konsep injektif dan objektif. Maka didalam hal ini, **A** tidak harus sama dengan **C**.

* Alfabet A: 0, 1, 2, 3, ... 9, A, B, C, D, E, F
* Alfabet C: a, b, c, d, e, ... p.

Alfabet A dan C dapat juga merupakan suatu karakter, di mana alfabet A berisi urutan dari alfabet **A-Z**, sedangkan alfabet C atau alfabet substitusi merupakan urutan karakter yang didapat dengan beberapa cara berikut.

1. Urutan awal dibentuk dari karakter pada kata kunci

Urutan awal dibentuk dari karakter pada kata kunci dengan mengambil karakter yang berbeda (bila ada duplikasi, karakter itu tidak perlu dimasukkan ke dalam urutan). Urutan selanjutnya adalah urutan karakter alfabet berikutnya yang belum digunakan pada kunci

Berikut ini adalah tips untuk membuat kuncinya. a. Buat kunci dari sembarang kalimat: BELAJAR KRIPTOGRAFI SANGAT MENYENANGKAN

b. Buang karakter yang berulang: BELAJRKIPTOGFSNMY

c. Sambungkan dengan karakter lain yang belum ada: B E L A J R K I P T O G F S N M Y C D H Q U V W X Z

* Cara Engkripsi

Langkah-langkah enkripsinya adalah sebagai berikut:

a. Tentukan alfabet A, yaitu urutan dari alfabet A-Z.

b. Tentukan alfabet C, yaitu urutan yang diawali dengan karakter yang tidak sama pada kunci K dan diikuti oleh urutan karakter alfabet lain yang belum digunakan pada kunci.

c. Ciphertext didapatkan dengan menggunakan posisi pada alfabet A untuk mencari karakter pada alfabet C.

Contoh: Plaintext: CRYPTOGRAPHY Proses enkripsi menggunakan kunci EMY SETYANINGSIH.

a. Menentukan alfabet A dan C

| Posisi | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Alfabet A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| Alfabet C | E | M | Y | S | T | A | N | I | G | H | B | C | D | F | J |
|

| Posisi | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Alfabet A | P | Q | R | S | T | U | V | W | X | Y | Z |
| Alfabet C | K | L | O | P | Q | R | U | V | W | X | Z |

b. Nilai posisi dari karekter pada plaintext adalah sebagai berikut.

c. Posisi Pada Alfabet A digunakan untuk mencari karakter pada alfabet C.

| Plaintext | C | R | Y | P | T | O | G | R | A | P | H | Y |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Posisi Pada Alfabet A | 3 | 18 | 25 | 16 | 20 | 15 | 7 | 18 | 1 | 16 | 8 | 25 |
|

| Posisi Pada Alfabet C | 3 | 18 | 25 | 16 | 20 | 15 | 7 | 18 | 1 | 16 | 8 | 25 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Ciphertext | Y | O | X | K | Q | J | N | O | E | K | I | X |

d. Ciphertext: YOXKQJNOEKIX M-file untuk memanggil fungsi enkripsi dengan metode cipher substitusi disertakan dalam lampirn dengan nama substitusi.m. Sintaks pemanggilan pada command Window adalah >>substitusi

**Hasil tampilan outputnya adalah**

>>substitusi Plaintext: 'CRYPTOGRAPHY'

Kunci :'EMY SETYANINGSIH'

Cipherteks: YOXKQJNOEKIX

**Hasil enkripsi data teks menggunakan metode cipher substitusi.**

Berikut adalah langkah-langkah untuk enkripsi data teks.

a. Tentukan alfabet C, yaitu urutan yang diawali dengan karakter yang tidak sama pada kunci K dan dikuti oleh urutan karakter alfabet lainnya yang belum digunakan pada kunci

b. Tentukan alfabet A yaitu urutan dari alfabet A-Z.

c. Cari posisi karakter ciphertext di alfabet C untuk mencari karakter pada alfabet A

Contoh C Ciphertext: YOXKQJNOEKIX dengan K = EMY SETYANINGSIH

Proses dekripsi dilakukan dengan langkah-langkah berikut: a. Menentukan Alfabet A dan C

| Posisi | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Alfabet C | E | M | Y | S | T | A | N | I | G | H | B | C | D | F | J |
| Alfabet A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |

| Posisi | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Alfabet C | K | L | O | P | Q | R | U | V | W | X | Z |
| Alfabet A | P | Q | R | S | T | U | V | W | X | Y | Z |

b. Nilai posisi dari karakter pada ciphertext adalah sebagai berikut.

| Ciphertext | Y | O | X | K | Q | J | N | O | E | K | I | X |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Posisi Pada Alfabet C | 3 | 18 | 25 | 16 | 20 | 15 | 7 | 18 | 1 | 16 | 8 | 25 |

c. Posisi pada alfabet C digunakan untuk mencari karakter pada alfabet A.

| Posisi Pada Alfabet A | 3 | 18 | 25 | 16 | 20 | 15 | 7 | 18 | 1 | 16 | 8 | 25 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Plaintext | C | R | Y | P | T | O | G | R | A | P | H | Y |

d. Plaintext: CRYPTOGRAPHY M-file untuk memanggil fungsi dekripsi dengan metode cipher substitusi deisertakan dalam lampiran dengan nama dekrip\_substitusi.m. Sintaks pemanggilan pada command window adalah >> dekrip\_substitusi

**Hasil tampilan output**

>> dekrip\_substitusi Ciphertext: **YOXKQJNOEKIX**

Kunci : **EMY SETYANINGSIH**

Plainteks : **CRYPTOGRAPHY**

Lihat pula
----------

* Kriptografi

1. ↑  (Sasongko, 2005)