मुझे स्ट्रक्चर्ड डेटा सुरक्षित रखना है

Tink एपीआई, इनपुट के तौर पर आर्बिट्रेरी बाइनरी ब्लॉब का इस्तेमाल करता है. इसका मतलब है कि अगर आपको प्रोटोकॉल बफ़र जैसे स्ट्रक्चर्ड डेटा को एन्क्रिप्ट (सुरक्षित) करना है, तो आपको पहले डेटा को कोड में बदलना होगा.

प्रोटोबफ़ को एन्क्रिप्ट (सुरक्षित) करें

एन्क्रिप्ट करने के लिए:

  1. प्रोटोबफ़ को बाइट कलेक्शन में बदलें.
  2. क्रम से लगाए गए बाइट को एन्क्रिप्ट (सुरक्षित) करें. इसके बाद, आने वाले सादे टेक्स्ट को स्टोर करें या भेजें. इस्तेमाल करें:

डिक्रिप्ट करने के लिए:

  1. साइफ़रटेक्स्ट को डिक्रिप्ट करें.
  2. अगर पहला चरण सफल रहा, तो प्रोटोबफ़ को डीज़लाइज़ करें.

प्रोटोबफ़ को छेड़छाड़ से बचाएं

ज़्यादातर मामलों में, पुष्टि करने की तुलना में सिर्फ़ प्रोटोबफ़ को एन्क्रिप्ट (सुरक्षित) करना बेहतर होता है.

प्रोटोबफ़ को छेड़छाड़ से बचाने के लिए:

  1. प्रोटोबफ़ को बाइट कलेक्शन में बदलें.
  2. सीरीज़ वाली बाइट पर हस्ताक्षर करें या उनकी पुष्टि करें. इस्तेमाल करें:
  3. सिग्नेचर (या MAC) की मदद से सीरियल वाली बाइट एक साथ सेव करें.

सत्यापित करने के लिए:

  1. सीरीज़ वाला प्रोटोबफ़ और उसका सिग्नेचर (या एमएसी) पाएं.
  2. हस्ताक्षर (या MAC) की पुष्टि करें.
  3. प्रोटोबफ़ को डीसीरियलाइज़ करें.

ध्यान दें कि मान्य हस्ताक्षर या MAC से यह गारंटी नहीं मिलती कि डेटा सही तरीके से फ़ॉर्मैट हुआ है. डेटा को पार्स करने वाले इंप्लीमेंटेशन से हमेशा यह उम्मीद की जानी चाहिए कि डेटा खराब हो सकता है.

एक से ज़्यादा डेटा आइटम को सुरक्षित रखें

एक से ज़्यादा डेटा आइटम को सुरक्षित करने के लिए, क्रम तय करने के तरीके का इस्तेमाल करें. सभी डेटा आइटम को प्रोटोबफ़ में जोड़ें और उसे ऊपर बताए गए तरीके से एन्क्रिप्ट (या पुष्टि) करें.

इन्हें इस तरह भी क्रम में लगाया जा सकता है:

serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN

आखिर में, मिलने वाले बाइट ऐरे को एन्क्रिप्ट (या पुष्टि करें) करें.