Dalam kriptografi kunci publik, sidik jari kunci publik adalah urutan singkat byte yang digunakan untuk mengidentifikasi kunci publik yang lebih panjang.
Dalam SSH khususnya mereka dapat digunakan untuk memverifikasi bahwa server sebenarnya adalah server yang saya harapkan untuk berkomunikasi dengan dan saya tidak ditargetkan oleh serangan man-in-the-middle.
Mereka biasanya direpresentasikan sebagai rangkaian angka heksadesimal, sehingga bisa agak membosankan dan membosankan untuk membandingkannya dengan sidik jari yang saya harapkan:
37:e4:6a:2d:48:38:1a:0a:f3:72:6d:d9:17:6b:bd:5e
Untuk membuatnya sedikit lebih mudah, OpenSSH telah memperkenalkan metode untuk memvisualisasikan sidik jari sebagai seni ASCII, yang akan terlihat seperti berikut:
+-----------------+
| |
| |
| . |
| . o |
|o . o . S + |
|.+ + = . B . |
|o + + o B o E |
| o . + . o |
| .o |
+-----------------+
Dengan ini, saya bisa mencoba mengingat bentuk kasar seni ASCII dan kemudian (secara teoritis) mengenalinya ketika sidik jari server berubah dan gambar terlihat berbeda.
Bagaimana itu bekerja
Diambil dari Dirk Loss, Tobias Limmer, Alexander von Gernler. 2009. Uskup yang mabuk: Analisis algoritma visualisasi sidik jari OpenSSH .
Kisi memiliki lebar 17 karakter dan tinggi 9 karakter. "Uskup" dimulai pada baris 4 / kolom 8 (tengah). Setiap posisi dapat dilambangkan sebagai [x, y], yaitu [8,4] untuk posisi awal uskup.
1111111
01234567890123456
+-----------------+
0| |
1| |
2| |
3| |
4| S |
5| |
6| |
7| |
8| |
+-----------------+
Uskup menggunakan sidik jari untuk bergerak. Bunyinya byte-bijaksana dari kiri ke kanan dan dari bit paling signifikan ke bit paling signifikan:
Fingerprint 37 : e4 : 6a : ... : 5e
Bits 00 11 01 11 : 11 10 01 00 : 01 10 10 10 : ... : 01 01 11 10
| | | | | | | | | | | | | | | |
Step 4 3 2 1 8 7 6 5 12 11 10 9 64 63 62 61
Uskup akan bergerak dengan rencana berikut:
Bits Direction
-----------------
00 Up/Left
01 Up/Right
10 Down/Left
11 Down/Right
Kasus khusus:
- Jika uskup ada di sudut dan akan pindah ke sudut lagi, dia tidak bergerak sama sekali. yaitu: Uskup berada di
[0,0]
dan langkah selanjutnya adalah00
. Dia tetap di[0,0]
- Jika uskup berada di sudut atau di dinding dan akan pindah ke salah satu dinding, dia bergerak secara horizontal atau vertikal saja. yaitu: Uskup berada di
[0,5]
dan langkah selanjutnya adalah01
. Dia tidak bisa pergi ke kiri, jadi dia hanya bergerak ke atas, ke[0,4]
.
Setiap posisi memiliki nilai seberapa sering uskup mengunjungi bidang ini:
Value | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13| 14| 15| 16|
Character | | . | o | + | = | * | B | O | X | @ | % | & | # | / | ^ | S | E |
Nilai 15 (S) dan 16 (E) adalah istimewa karena menandai masing-masing posisi awal dan akhir uskup dan menimpa nilai sebenarnya dari posisi yang menghormati.
Tujuan
Buat program, yang mengambil sidik jari alfanumerik sebagai input dan menghasilkan representasi seni ASCII seperti yang ditunjukkan dalam contoh.
Contohnya
Input:
16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
Output:
+-----------------+
| . |
| + . |
| . B . |
| o * + |
| X * S |
| + O o . . |
| . E . o |
| . . o |
| . . |
+-----------------+
Input:
b6:dd:b7:1f:bc:25:31:d3:12:f4:92:1c:0b:93:5f:4b
Output:
+-----------------+
| o.o |
| .= E.|
| .B.o|
| .= |
| S = .|
| . o . .= |
| . . . oo.|
| . o+|
| .o.|
+-----------------+
Input:
05:1e:1e:c1:ac:b9:d1:1c:6a:60:ce:0f:77:6c:78:47
Output:
+-----------------+
| o=. |
| o o++E |
| + . Ooo. |
| + O B.. |
| = *S. |
| o |
| |
| |
| |
+-----------------+
Aturan
- Ini adalah kode-golf . Kode dalam byte paling sedikit menang.
- Anda tidak dapat menggunakan perpustakaan yang ada yang menghasilkan gambar.
- Gunakan bahasa apa pun yang Anda suka!
- Kiriman Anda harus merupakan program yang lengkap
33:33:33:...:33
, cc:cc:cc:...:cc
akan menjadi contoh untuk ini. Sidik jari biasanya hash MD5, jadi sangat tidak mungkin Anda mendapatkan hasil seperti itu. Saya belum menemukan sumber yang dapat dipercaya tentang cara menangani ini, jadi untuk sekarang saya akan mengatakan: Asumsikan tidak ada sel yang akan dikunjungi lebih dari 14 kali.