आपकी टिप्पणियों को पढ़ने के बाद, यह अधिक उचित लगता है। मुझे यकीन नहीं था कि आप इस तरह के डेटा के मेगाबाइट एन्कोडिंग पर इरादा कर रहे थे।
मैं ओलिवर के सुझाव की तर्ज पर सुझाव देता हूं, कि आप बेकन के सिफर से एक पृष्ठ उधार लेकर अपना डेटा घनत्व बढ़ाते हैं , जिसे जेल गिरोह अक्सर 2 अलग-अलग स्क्रिप्ट शैलियों में लिखी गई मिसाइलों में छिपे संदेशों को एनकोड करने के लिए उपयोग करते हैं - आमतौर पर ऊपरी बनाम लोअरकेस वर्ण या प्रिंट बनाम घसीट वर्ण, जैसे
Hey mOM, WHAT's FOR diNNeR TODAY? = ABBBA AAAAA BAAAB BAABA AAAAA
= P A S T A
हालाँकि, चूंकि आपका लक्ष्य स्टेग्नोग्राफ़ी नहीं है, आप अपने ग्लिफ़ सेट का विस्तार करने के लिए इसका उपयोग करेंगे। ऐसा करने से, आप 114 ग्लिफ़ तक प्रिंट और सरसरी अल्फ़ान्यूमेरिक वर्ण या 12996 कोड बिंदुओं का उपयोग करके दोहरे वर्ण एन्कोडिंग का उपयोग कर सकते हैं।
हालाँकि, चूंकि सभी ग्लिफ़ 15 से अधिक और 256 से कम की गणना बाइनरी डेटा के एक सीधे सिफर के लिए अनिवार्य रूप से समान हैं (मतलब, आपको प्रत्येक बाइट का प्रतिनिधित्व करने के लिए 2 वर्णों की आवश्यकता होगी, जिससे आपको प्रति वर्ण 4 बिट का डेटा घनत्व मिलेगा सभी मामलों), आप त्रुटि का पता लगाने / सुधार के लिए अतिरिक्त 98 ग्लिफ़ / 12740 कोड पॉइंट का उपयोग कर सकते हैं।
ऐसा करने के तरीकों में शामिल हैं:
- वर्ण कंघी पढ़ने / लिखने के लिए सबसे आसान 256 का एक सेट चुनें। यदि कोई अन्य वर्ण कॉम्बो होता है, तो आप जानते हैं कि यह एक प्रतिलिपि त्रुटि है।
- समता वर्ण के रूप में अंत वर्ण के दो संस्करणों का उपयोग करें।
50 अलग-अलग 16-वर्ण ग्लिफ़ सेट बनाएं। फिर आप उन्हें त्रुटि सुधार डेटा सांकेतिक शब्दों में बदलना करने के लिए उपयोग कर सकते हैं।
उदा का {set 1}{set 1}
अर्थ है अगले 3 निबल समान 0x000
, {set 1}{set 2}
बराबर 0x001
आदि।
आप 4096 संभावित 1.5 बाइट मानों के 2500+ का प्रतिनिधित्व करने के लिए इसका उपयोग कर सकते हैं। इसी तरह, आप निम्नलिखित बाइट के सभी मूल्यों का प्रतिनिधित्व करने के लिए सिर्फ 16 सेट का उपयोग कर सकते हैं, जिससे आपको अपने एन्कोडेड डेटा की लंबाई में वृद्धि के बिना 100% अतिरेक मिलता है।
वैकल्पिक रूप से, आप अतिरिक्त संपीड़न के लिए अतिरिक्त ग्लिफ़ का उपयोग कर सकते हैं:
- 98 एकल-वर्ण कोड बिंदुओं को चुनकर चर-चौड़ाई एन्कोडिंग को लागू करें। इससे औसत एन्कोडेड सामग्री का आकार लगभग 20% कम हो जाएगा।
- रनिंग-लेंडिंग एन्कोडिंग के समान कुछ को अलग-अलग ग्लिफ़ सेट या ग्लिफ़ सेट संयोजन का उपयोग करके दोहराते हुए निबल्स / बाइट्स का प्रतिनिधित्व करने के लिए लागू करें। जैसे
Ab
= aba
; aB
= abab
; AB
= ababab
...
- "शब्दों" और "वाक्यांशों" का प्रतिनिधित्व करने के लिए अतिरिक्त ग्लिफ़ या कोड बिंदुओं का उपयोग करें जो आपके डेटा में दोहराए जाते हैं। हालांकि पूर्व-संपीड़ित डेटा में उच्च स्तर की एंट्रोपी होगी, इसलिए मुझे नहीं पता कि यह कितना प्रभावी होगा।
कॉपी करने की त्रुटियों को और कम करने के लिए, मैं ग्रिडलाइन में एन्कोडेड सामग्री को प्रदर्शित करूंगा और ग्राफिंग पेपर पर कॉपी करूंगा। यदि आप कस्टम स्टेशनरी का उपयोग कर सकते हैं जिसमें बारी-बारी से कॉलम / पंक्ति के रंग या त्वरित लुक-अप के लिए लेटरेड कॉलम और गिने पंक्तियों के साथ एक शतरंजबोर्ड-स्टाइल चेकर ग्रिड है, जो प्रतिलिपि सटीकता को बढ़ाएगा।
आप वैकल्पिक वर्ण शैलियों के साथ एक वैकल्पिक ग्रिड लेआउट को त्रुटि का पता लगाने के एक आसान रूप के रूप में भी जोड़ सकते हैं। यानी अगर अजीब कॉलम को हमेशा कैपिटल में रखा जाता है, अगर ट्रांसक्रिप्शनर खुद को अजीब कॉलम में लोअरकेस अक्षर लिखते हुए पाता है, तो उन्हें पता है कि उन्होंने एक त्रुटि की है और यह देखने के लिए वापस ट्रैकिंग शुरू कर सकते हैं कि यह कहां हुआ।
यद्यपि यदि आपकी मुख्य प्राथमिकता सटीकता है, तो मैं एक बाइनरी एन्कोडिंग +
हैमिंग कोड का उपयोग करूंगा । मानक रेखांकन कागज पर एक (12, 8) छोटा हैमिंग कोड का उपयोग करते हुए, आप केवल 187 बाइट्स फिट कर सकते हैं, केवल 124 बाइट्स डेटा एन्कोडिंग। लेकिन इसे बहुत जल्दी (1 के लिए स्लैश, 0 के लिए कुछ भी नहीं) और एकल त्रुटि सुधार प्रदान किया जा सकता है। एक अतिरिक्त समता बिट (13, 8) पर टैप करने से SECDED (एकल त्रुटि सुधार, दोहरी त्रुटि का पता लगाने) की सुविधा मिलेगी। मानक हैमिंग कोड जैसे (15, 11) या (31, 26) का उपयोग करके, आपको क्रमशः प्रति शीट डेटा 137 और 156 बाइट्स के साथ और भी बेहतर दक्षता मिलती है। यहां तक कि उच्च कोड दरें भी प्राप्त की जा सकती हैं, यह इस बात पर निर्भर करता है कि आप कितना सटीक मानते हैं कि आपका प्रतिलेखक हो सकता है।
एक द्विआधारी एन्कोडिंग को पढ़ना (जोर से) और ओसीआर / ओएमआर को पढ़ना भी आसान होगा।