C. SANDI AFFINE
Sandi Geser merupakan kasus khusus dari Sandi Substitusi. Kasus khusus lainnya dari Sandi Substitusi adalah Sandi Affine. Sandi Geser juga
dapat dikatakan sebagai kasus khusus dari Sandi Affine. Sandi Geser yang telah dibahas sebelumnya dapat digeneralisasi dan sedikit diperkuat.
Dalam Sandi Affine, untuk melakukan proses enkripsi dapat dilihat fungsi enkripsi ke dalam fungsi yang berbentuk
, dimana
.
Fungsi yang digunakan dinamakan fungsi affine, oleh karena itu penyandian ini dinamakan Sandi Affine. Perhatikan, ketika
maka sandi tersebut akan menjadi Sandi Geser. Bagaimana dengan fungsi dekripsi dalam proses
enkripsi sandi tersebut? Agar proses dekripsi dapat terjadi, perlu dipertanyakan kapan suatu fungsi affine adalah fungsi injektif. Dengan kata
lain, untuk setiap ,
harus mempunyai penyelesaian tunggal bagi . Kekongruenan di atas
ekuivalen dengan .
Apabila y berubah terhadap , maka
juga berubah-ubah terhadap . Karena itu, cukup dengan mempelajari kekongruenan
dimana . Dengan kata lain, dapat dikatakan bahwa
kekongruenan linear mempunyai penyelesaian tunggal.
Menurut Akibat 2.10, dapat dinyatakan kekongruenan tersebut mempunyai penyelesaian tunggal untuk setiap
di dalam jika dan hanya jika
. Apabila , maka kekongruenan akan mempunyai paling sedikit dua penyelesaian
berbeda di dalam . Dalam hal ini
bukan fungsi injektif. Oleh karena itu, fungsi tersebut bukan fungsi enkripsi yang valid.
Sebagai contoh, untuk diperoleh , berarti
bukan fungsi enkripsi yang valid. Hal ini dikarenakan pada proses enkripsi
dan akan menghasilkan nilai yang sama untuk setiap
.
Akibat 2.10 telah menunjukkan bahwa jika , maka
kekongruenan linear mempunyai penyelesaian tunggal di
.
Oleh karena itu, jika berubah-ubah terhadap
maka diperoleh dari
nilai berbeda modulo 26.
Nilai sedemikian sehingga
, yaitu . Sedangkan untuk nilai dapat
berupa setiap elemen di
.
Dengan demikian, Sandi Affine mempunyai kemungkinan kunci.
Andaikan bahwa . Untuk melakukan proses dekripsi,
kita harus menyelesaikan kekongruenan untuk .
Pembicaraan di atas menunjukkan bahwa kekongruenan linear tersebut akan mempunyai penyelesaian tunggal di
, tetapi itu tidak memberi kita metode yang efisien untuk mencari penyelesaiannya. Apa yang kita
butuhkan adalah algoritma yang efisien untuk melakukan hal ini. Secara kebetulan, beberapa hasil yang lebih lanjut dalam aritmetika modulo
memberikan algoritma dekripsi yang efisien yang diinginkan, yaitu diperlukan ide tentang invers perkalian. Hal ini dapat ditunjukkan bahwa
mempunyai invers perkalian modulo jika dan hanya jika
. Jika mempunyai invers perkalian, maka invers tersebut tunggal dalam modulo
. Perhatikan, jika maka
. Jika adalah bilangan
prima, maka setiap elemen tak-nol anggota .mempunyai invers perkalian.
Pada bagian selanjutnya, akan dijelaskan algoritma yang efisien untuk menghitung invers perkalian di dalam
untuk setiap . Tetapi, di dalam
sebagai percobaan dan kesalahan cukup dengan mencari invers perkalian dari elemen-elemen yang relative prima dengan 26:
, ,
, ,
, ,
, ,
, ,
, dan .
Semua dapat dibuktikan dengan mudah. Sebagai contoh, .
Jadi, dan
.
Ingat bahwa kekongruenan ekuivalen dengan
.
Karena , maka mempunyai invers perkalian modulo .
Kedua ruas dikalikan dengan , diperoleh
.
Untuk ruas kiri, dengan menggunakan sifat assosiatif perkalian modulo sehingga
.
Diperoleh . Rumus tersebut merupakan rumus
eksplisit untuk . Dengan demikian, diperoleh fungsi dekripsi yaitu:
.
Jadi, untuk lengkapnya fungsi enkripsi dan fungsi dekripsi dari Sandi Affine ditunjukkan pada definisi berikut ini.
Definisi 3.5 Sandi Affine
Misalkan dan misalkan
{ }
Untuk , didefinisikan
dan
dimana dan .
Contoh 3.4 Misalkan kunci
digunakan untuk mengenkripsi teks-asal “ ”. Diperoleh fungsi enkripsinya adalah:
Masing-masing huruf disesuaikan dengan bilangan bulat modulo menurut Tabel 3.1, sehingga diperoleh:
.
Dengan menggunakan fungsi enkripsi di atas diperoleh:
Dengan demikian, dihasilkan teks-sandi berbentuk: .
Contoh 3.5 Misalkan kunci yang digunakan seperti pada Contoh 3.4, yaitu
. Digunakan untuk mendekripsi suatu teks-sandi yang berbentuk
“ ”.
Seperti yang telah ditunjukkan sebelumnya, . Maka didapat fungsi
dekripsi yaitu:
dimana semua perhitungan dilakukan dalam . Alangkah lebih baik
terlebih dulu diperiksa bahwa untuk semua anggota
. Dengan perhitungan yang dilakukan di
diperoleh
. Sama halnya dengan melakukan proses enkripsi, untuk melakukan proses
dekripsi pertama teks-sandi diubah dalam anggota-anggota , menurut
Tabel 3.1 yaitu:
Kemudian dengan menggunakan fungsi dekripsi di atas, maka dihasilkan:
.
Dengan demikian diperoleh teks-asal yaitu
.
D. SANDI VIGENÈRE