निम्नलिखित विनिर्देश दिए गए डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक प्रोग्राम या फ़ंक्शन (या प्रोग्राम / फ़ंक्शन का सेट) लिखें:
एन्क्रिप्शन
XOR-ing द्वारा इनपुट की एक XOR हैश की गणना प्रत्येक बाइट को एक-दूसरे के साथ करें।
इस हैश द्वारा इनपुट के हर बाइट XOR।
परिणाम चार बिट छोड़ दिया है।
XOR हैश के पहले चार बिट्स के साथ बाईं ओर पैड।
XOR हैश के अंतिम चार बिट्स के साथ दाईं ओर पैड।
उदाहरण
दिए गए इनपुट:
"G0lf"
(0x47306C66
)गणना XOR हैश:
0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D
XOR हर बाइट हैश द्वारा:
0x3A4D111B
अपेक्षित परिणाम (शिफ्ट और पैड के बाद):
"s¤Ñ\x11½"
(0x73A4D111BD
)
नियम
जब तक इनपुट / आउटपुट वास्तविक बाइट्स होते हैं, तब तक आपका प्रोग्राम / फंक्शन इनपुट / आउटपुट को आपकी पसंद की गोल्फ भाषा (स्ट्रिंग, बाइट एरे, आदि) से समझ सकता है । उदाहरण के लिए, आप हेक्सिडेसिमल स्ट्रिंग का उत्पादन नहीं कर सकते हैं।
एन्क्रिप्शन और डिक्रिप्शन को अलग-अलग कार्यक्रमों में विभाजित किया जा सकता है (स्कोर उनका संयुक्त आकार होगा) या एकल। एकल विधियाँ इस बात के लिए तर्क दे सकती हैं कि इसे एन्क्रिप्ट या डिक्रिप्ट करना चाहिए।
एन्क्रिप्शन के लिए इनपुट से आकार में कम से कम 1 बाइट होने की उम्मीद की जा सकती है।
डिक्रिप्शन के लिए इनपुट कम से कम 2 बाइट्स होने की उम्मीद की जा सकती है।
गैर-मुद्रण योग्य बाइट्स को आउटपुट में भागने की आवश्यकता नहीं है।