Rumah >hujung hadapan web >tutorial js >Javascript melaksanakan algoritma kata laluan playfair dan bukit_Pengetahuan asas
Sehingga akhir semester, belajar untuk kerja rumah tentang pengenalan kepada keselamatan maklumat. Saya kebetulan menjumpai algoritma playfair dan algoritma bukit dalam algoritma kriptografi klasik Sangat menarik untuk melaksanakannya dalam bahasa JavaScript. Saya menyemak Baidu semasa pengekodan, dan secara kebetulan, saya mempelajari asas JavaScript.
playfair
Sifir Playfair (Bahasa Inggeris: Playfair cipher atau Playfair square) ialah sifir penggantian. Ia ditulis berdasarkan jadual kata laluan yang terdiri daripada petak 5*5, dengan 25 huruf disusun dalam jadual. Untuk 26 huruf dalam bahasa Inggeris, Z yang paling biasa digunakan dialih keluar untuk membentuk jadual kata laluan.
Idea pelaksanaan:
1. Sediakan jadual kata laluan
Kunci ialah perkataan atau frasa, dan jadual kata laluan disusun berdasarkan kunci yang diberikan oleh pengguna. Jika terdapat huruf berulang, huruf berulang seterusnya boleh dialih keluar.
Jika kunci anjing gila, ia boleh dikompilasi menjadi
C
|
O
|
H
|
M
|
T
|
R
|
G
|
Saya
|
N
|
U
|
A
|
B
|
J
|
P
|
V
|
Y
|
E
|
K
|
S
|
W
|
D
|
F
|
L
|
S
|
X
|
Pertimbangkan keperluan untuk mengalih keluar aksara pendua dan Z apabila memasukkan aksara kunci ke dalam jadual kata laluan Algoritma reka bentuk adalah seperti berikut:
2. Susun teks biasa
Bentuk sepasang setiap dua huruf plaintext. Jika terdapat dua huruf yang sama bersebelahan antara satu sama lain dalam sepasang atau huruf terakhir adalah satu huruf, masukkan X. Pengekodan awal tidak bertimbang rasa, dan pengguna secara paksa menolak untuk memasukkan bilangan huruf ganjil, mengakibatkan pengalaman pengguna yang buruk.
var k = document.getElementById("keychars").value.toUpperCase().replace(/s/ig,'');
Alih keluar ruang dan tukar teks biasa kepada huruf besar.
3. Tulis teks sifir
Peraturan penyulitan teks biasa (dari Baidu):
1) Jika p1 dan p2 berada pada baris yang sama, sifir teks c1 dan c2 yang sepadan ialah huruf serta-merta di sebelah kanan p1 dan p2. Lajur pertama dianggap berada di sebelah kanan lajur terakhir. Contohnya, mengikut jadual sebelumnya, ct sepadan dengan oc
2) Jika p1 dan p2 berada dalam lajur yang sama, teks sifir c1 dan c2 yang sepadan ialah huruf tepat di bawah p1 dan p2. Baris pertama dianggap berada di bawah baris terakhir.
3) Jika p1 dan p2 tidak berada dalam baris atau lajur yang sama, maka c1 dan c2 ialah huruf di dua penjuru lain segi empat tepat yang ditentukan oleh p1 dan p2 (untuk penggantian mendatar atau penggantian menegak, anda mesti membuat temu janji dalam terlebih dahulu, atau cuba sendiri). Mengikut jadual sebelumnya, wh sepadan dengan tk atau kt.
Contohnya, mengikut jadual di atas, teks yang jelas di mana ada kehidupan, di situ ada harapan.
Ia boleh diatur sebagai mana dia hidup semula pada masa lalu
Maka teks sifirnya ialah: kt yg wo ok gy nl hj of cm yg kg lm mb wf
Tukar teks sifir kepada huruf besar dan susun huruf dalam kumpulan.
Contohnya, sekumpulan 5 orang ialah KTYGW OOKGY NLHJO FCMYG KGLMM BWF
4. Penyahsulitan
Kunci diisi dalam matriks 5*5 (mengeluarkan huruf berulang dan huruf z lain yang tidak digunakan dalam matriks diisi dalam kedudukan matriks yang selebihnya mengikut urutan . Lakukan sebaliknya.
Kesannya adalah seperti yang ditunjukkan dalam rajah:
bukit
Hill Password ialah sifir penggantian yang menggunakan prinsip teori matriks asas. Ia ditulis berdasarkan jadual kata laluan yang terdiri daripada petak 5*5, dengan 25 huruf disusun dalam jadual. Untuk 26 huruf dalam bahasa Inggeris, Z yang paling biasa digunakan dialih keluar untuk membentuk jadual kata laluan.
Idea pelaksanaan:
1, Tulis abjad
var aksara = ['A','B','C','D','E','F','G', 'H','I','J','K','L ','M','N','O','P','Q','R','S','T','U','V','W','X', 'Y','Z'];
2. Menjana kunci secara rawak
Algoritma di atas mempunyai kekurangan:
1. Reka bentuk berorientasikan proses, gandingan tinggi
2. Terdapat terlalu banyak gelung bersarang dan kecekapan algoritma perlu dioptimumkan
3. Pertimbangan yang tidak mencukupi tentang kemungkinan situasi, seperti tidak memproses apabila pengguna memasukkan aksara bukan abjad.
Ringkasan:
Setelah mempelajari kursus Pengenalan Keselamatan Maklumat untuk seketika, saya hanya boleh menconteng permukaan keselamatan maklumat. Keselamatan maklumat adalah subjek yang sangat menarik Apabila anda menghadapi beberapa masalah, anda harus memikirkannya sebanyak mungkin, melakukannya sebanyak mungkin, dan menggunakannya sebanyak mungkin. Pada masa yang sama, ia juga perlu untuk mengukuhkan pengumpulan asas matematik, mengukuhkan asas js, dan meluaskan pengetahuan. Jalan di hadapan adalah panjang dan sukar.