Tink API, इनपुट के तौर पर आर्बिट्रेरी बाइनरी ब्लॉब को लेता है. इसका मतलब है कि अगर आपको स्ट्रक्चर्ड डेटा को एन्क्रिप्ट (सुरक्षित) करने का तरीका, जैसे कि प्रोटोकॉल बफ़र होने चाहिए, तो आपको डेटा को पहले एन्कोड करें.
प्रोटोबफ़ को एन्क्रिप्ट करना
एन्क्रिप्ट करने के लिए:
- प्रोटोबफ़ को बाइट अरे में क्रम से लगाएं.
- सीरियल बाइट को एन्क्रिप्ट करें, इसके बाद बनने वाले साइफ़रटेक्स्ट को सेव करें या भेजें. इस्तेमाल करें:
डिक्रिप्ट करने के लिए:
- सादे टेक्स्ट को डिक्रिप्ट करें.
- अगर पहला चरण सफल रहा, तो प्रोटोबफ़ को डीसीरियलाइज़ करें.
किसी प्रोटोबफ़ को छेड़छाड़ से बचाना
ज़्यादातर मामलों में, सिर्फ़ पुष्टि करने के बजाय प्रोटोबफ़ को एन्क्रिप्ट करना बेहतर होता है.
किसी प्रोटोबफ़ को छेड़छाड़ से बचाने के लिए:
- प्रोटोबफ़ को बाइट अरे में क्रम से लगाएं.
- क्रम से लगाए गए बाइट पर हस्ताक्षर करें या उनकी पुष्टि करें. इस्तेमाल करें:
- सीरियल बाइट को सिग्नेचर (या MAC) के साथ सेव करें.
सत्यापित करने के लिए:
- सीरियल के तौर पर दिया गया प्रोटोबफ़ और उसका सिग्नेचर (या MAC) पाएं.
- हस्ताक्षर (या MAC) की पुष्टि करें.
- प्रोटोबफ़ को डीसीरियलाइज़ (पार्स) करना.
ध्यान दें कि मान्य हस्ताक्षर या MAC से यह गारंटी नहीं मिलती कि डेटा सही है फ़ॉर्मैट किया गया है. डेटा को पार्स करने वाले तरीके से यह उम्मीद की जानी चाहिए कि डेटा खराब हो सकता है.
एक से ज़्यादा डेटा आइटम को सुरक्षित रखें
एक से ज़्यादा डेटा आइटम को सुरक्षित रखने के लिए, क्रम से लगाने के तरीके का इस्तेमाल करें. पूरा डेटा जोड़ना आइटम को प्रोटोबफ़ में सेव करना होगा और ऊपर बताए गए तरीके से इसे एन्क्रिप्ट (या पुष्टि) करना होगा.
आप इन्हें क्रम से भी बना सकते हैं:
serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN
आखिर में, बनने वाले बाइट अरे को एन्क्रिप्ट (या पुष्टि) करें.