公開キー暗号化では、公開キーフィンガープリントは、より長い公開キーを識別するために使用される短いバイトシーケンスです。
特にSSHでは、サーバーが実際に通信する予定のサーバーであり、中間者攻撃の標的になっていないことを確認するために使用できます。
それらは通常16進数の文字列として表されるため、期待する指紋と比較するのはかなり退屈で面倒です。
37:e4:6a:2d:48:38:1a:0a:f3:72:6d:d9:17:6b:bd:5e
少し簡単にするために、OpenSSHは指紋をASCIIアートとして視覚化する方法を導入しました。これは次のようになります。
+-----------------+
| |
| |
| . |
| . o |
|o . o . S + |
|.+ + = . B . |
|o + + o B o E |
| o . + . o |
| .o |
+-----------------+
これにより、ASCIIアートの大まかな形状を覚えて、サーバーの指紋が変更され、画像が異なって見える場合に(理論的に)認識できます。
使い方
撮影ディルク・ロス、トビアスLimmer、アレクサンダー・フォン・Gernler。2009.酔った司教:OpenSSH指紋可視化アルゴリズムの分析。
グリッドの幅は17文字、高さは9文字です。「司教」は、行4 /列8(中央)から始まります。各ポジションは、[x、y]、つまり司教の開始ポジションの[8,4]として表すことができます。
1111111
01234567890123456
+-----------------+
0| |
1| |
2| |
3| |
4| S |
5| |
6| |
7| |
8| |
+-----------------+
司教は指紋を使って動き回ります。左から右へ、最下位ビットから最上位ビットまでバイト単位で読み取ります。
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
司教は次の計画に従って移動します。
Bits Direction
-----------------
00 Up/Left
01 Up/Right
10 Down/Left
11 Down/Right
特殊なケース:
- 司教が角にいて、再び角に移動する場合、彼はまったく動きません。例:司教は
[0,0]
次のステップにあります00
。彼は[0,0]
- ビショップがコーナーまたは壁にいて、壁の1つに移動する場合、司教は水平または垂直にのみ移動します。例:司教は
[0,5]
次のステップにあります01
。彼は左に行くことができないので、彼はただ上に移動し[0,4]
ます。
各ポジションには、司教がこのフィールドを訪問した頻度の値が保持されます。
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)と16(E)は、それぞれ司教の開始位置と終了位置をマークし、尊重する位置の実際の値を上書きするという点で特別です。
ゴール
入力として英数字の指紋を取り、例に示すようにASCIIアート表現を生成するプログラムを作成します。
例
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 |
| |
| |
| |
+-----------------+
ルール
- これはcode-golfです。最小バイトのコードが優先されます。
- イメージを生成する既存のライブラリを使用することはできません。
- 好みの言語を使用してください!
- あなたの提出物は完全なプログラムでなければなりません
33:33:33:...:33
、cc:cc:cc:...:cc
この例です。フィンガープリントは通常MD5ハッシュであるため、このような結果が得られる可能性は非常に低いです。これらに対処する方法に関する信頼できる情報源は見つかりませんでしたので、今のところ私は言うでしょう:セルは14回以上訪問されないと仮定します。