Genel anahtar şifrelemesinde, genel anahtar parmak izi daha uzun bir genel anahtarı tanımlamak için kullanılan kısa bayt dizisidir.
Özellikle SSH'de, bir sunucunun aslında iletişim kurmayı beklediğim ve ortadaki bir saldırıyla hedef almadığım sunucu olduğunu doğrulamak için kullanılabilirler.
Genellikle onaltılık basamak dizesi olarak temsil edilir, bu nedenle beklediğim parmak izi ile karşılaştırmak oldukça sıkıcı ve sıkıcı olabilir:
37:e4:6a:2d:48:38:1a:0a:f3:72:6d:d9:17:6b:bd:5e
Biraz daha kolaylaştırmak için OpenSSH, parmak izlerini ASCII sanatı olarak görselleştirmek için aşağıdaki gibi görünen bir yöntem getirdi:
+-----------------+
| |
| |
| . |
| . o |
|o . o . S + |
|.+ + = . B . |
|o + + o B o E |
| o . + . o |
| .o |
+-----------------+
Bununla, ASCII sanatının kaba şeklini hatırlamaya çalışabilirim ve ardından sunucunun parmak izi değiştiğinde ve görüntü farklı göründüğünde (teorik olarak) tanıyabilirdim.
Nasıl çalışır
Izgara, 17 karakter genişliğinde ve 9 karakter yüksekliğindedir. "Piskopos" sıra 4 / sütun 8'de (ortada) başlar. Her pozisyon, filin başlangıç pozisyonu için [x, y], yani [8,4] olarak belirtilebilir.
1111111
01234567890123456
+-----------------+
0| |
1| |
2| |
3| |
4| S |
5| |
6| |
7| |
8| |
+-----------------+
Piskopos dolaşmak için parmak izini kullanıyor. Soldan sağa ve en az önemli olan bitden en anlamlı bit olana kadar bayt şeklinde okur:
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
Piskopos aşağıdaki plana göre hareket edecektir:
Bits Direction
-----------------
00 Up/Left
01 Up/Right
10 Down/Left
11 Down/Right
Özel durumlar:
- Piskopos bir köşede ise ve tekrar köşeye giderse, hiç hareket etmez. yani: Piskopos at
[0,0]
ve bir sonraki adımı olacak00
. O kalır[0,0]
- Piskopos bir köşede ya da bir duvardaysa ve duvarlardan birine girerse, yalnızca yatay ya da dikey olarak hareket eder. yani: Piskopos at
[0,5]
ve bir sonraki adımı olacak01
. Sola gidemez, bu yüzden sadece yukarı hareket eder[0,4]
.
Her pozisyonda, piskoposun bu alanı ne sıklıkta ziyaret ettiğinin bir değeri vardır:
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 |
15 (S) ve 16 (E) değerleri, piskoposun sırasıyla başlangıç ve bitiş pozisyonunu işaretlemelerinde ve saygı duyulan pozisyonun gerçek değerinin üzerine yazılmasında özeldir.
Hedef
Girdi olarak alfa nümerik parmak izini alan ve örneklerinde gösterildiği gibi ASCII sanat gösterimini üreten bir program oluşturun.
Örnekler
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 |
| |
| |
| |
+-----------------+
kurallar
- Bu kod golfü . En az bayttaki kod kazanır.
- Sen olabilir değil görüntü üretir varolan kitaplığı kullanın.
- Tercih ettiğiniz dili kullanın!
- Gönderiniz tam bir program olmalı
33:33:33:...:33
, cc:cc:cc:...:cc
bunun için örnekler olurdu. Parmak izi genellikle bir MD5 özetidir, bu nedenle böyle bir sonuç elde etmeniz pek olası değildir. Bunlarla nasıl başa çıkılacağı konusunda güvenilir bir kaynak bulamadım, bu yüzden şimdilik şunu söyleyebilirim: Hiçbir hücrenin 14 kezden fazla ziyaret edilmeyeceğini varsayın.