सार्वजनिक कुंजी क्रिप्टोग्राफी में, एक सार्वजनिक कुंजी फिंगरप्रिंट एक लंबी सार्वजनिक कुंजी की पहचान करने के लिए उपयोग किए जाने वाले बाइट्स का एक छोटा अनुक्रम है।
विशेष रूप से SSH में उनका उपयोग यह सत्यापित करने के लिए किया जा सकता है कि एक सर्वर वास्तव में वह सर्वर है जिसके साथ मैं संवाद करने की अपेक्षा कर रहा हूं और मैं एक मानव-मध्य हमले द्वारा लक्षित नहीं हूं।
वे आमतौर पर हेक्साडेसिमल अंकों की एक स्ट्रिंग के रूप में दर्शाए जाते हैं, इसलिए मैं इसकी अपेक्षा फिंगरप्रिंट से तुलना करने के बजाय उबाऊ और थकाऊ हो सकता हूं:
37:e4:6a:2d:48:38:1a:0a:f3:72:6d:d9:17:6b:bd:5e
इसे थोड़ा आसान बनाने के लिए, ओपनएसएसएच ने ASCII कला के रूप में उंगलियों के निशान की कल्पना करने के लिए एक विधि पेश की है, जो इस तरह दिखाई देगी:
+-----------------+
| |
| |
| . |
| . o |
|o . o . S + |
|.+ + = . B . |
|o + + o B o E |
| o . + . o |
| .o |
+-----------------+
इसके साथ, मैं ASCII कला के किसी न किसी आकार को याद करने की कोशिश कर सकता था और तब (सैद्धांतिक रूप से) इसे पहचान सकता था जब सर्वर का फिंगरप्रिंट बदल गया और छवि अलग दिखती है।
यह काम किस प्रकार करता है
ग्रिड में 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]
- यदि बिशप एक कोने में या एक दीवार पर है और दीवारों में से एक में स्थानांतरित होगा, तो वह क्षैतिज या लंबवत रूप से चलता है। यानी: बिशप है
[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 |
| |
| |
| |
+-----------------+
नियम
- यह कोड-गोल्फ है । सबसे कम बाइट्स में कोड जीतता है।
- आप एक मौजूदा पुस्तकालय का उपयोग नहीं कर सकते हैं जो छवि का उत्पादन करता है।
- जो भी आपको पसंद हो भाषा का प्रयोग करें!
- आपका सबमिशन पूरा प्रोग्राम होना चाहिए
33:33:33:...:33
, cc:cc:cc:...:cc
इसके लिए उदाहरण होंगे। फ़िंगरप्रिंट आमतौर पर एमडी 5 हैश है, इसलिए यह बहुत संभावना नहीं है कि आपको ऐसा परिणाम मिलेगा। मुझे इनसे निपटने के बारे में कोई विश्वसनीय स्रोत नहीं मिला है, इसलिए अब मैं कहूंगा: मान लें