कई क्रिप्टोग्राफ़िक लाइब्रेरी में, कुंजियों की पहचान अक्सर सिर्फ़ कुछ बाइट क्रम से की जाती है. उदाहरण के लिए, EVP_EncryptInit_ex
जैसे OpenSSL फ़ंक्शन, जिनमें गिनती के लिए पासकोड के बाइट के अलावा, आईवी की भी ज़रूरत होती है. इसके अलावा, Cipher.init
जैसे javax.crypto तरीके, जिनमें पासकोड का क्रम और AlgorithmParameterSpec
, दोनों की ज़रूरत होती है. ऐसे फ़ंक्शन का सही तरीके से इस्तेमाल करना अक्सर मुश्किल होता है. साथ ही, गलत पैरामीटर पास करने से गंभीर नतीजे हो सकते हैं.
Tink का मकसद अलग होना है. साथ ही, यह उम्मीद करता है कि किसी कुंजी में हमेशा मुख्य कॉन्टेंट और मेटाडेटा (पैरामीटर), दोनों शामिल हों.
उदाहरण के लिए, एईएडी की पूरी कुंजी से यह पता चलता है कि एन्क्रिप्शन और डिक्रिप्शन कैसे काम करता है. इसमें दो फ़ंक्शन \(\mathrm{Enc}\) और\(\mathrm{Dec}\)के बारे में बताया जाता है. साथ ही, यह भी बताया जाता है कि सिफरटेक्स्ट को कैसे कोड में बदला जाता है. जैसे, शुरू करने वाला वेक्टर, एन्क्रिप्शन के बाद टैग.
Tink में एईएस पासकोड, सिर्फ़ 128, 192 या 256 बिट का बाइट क्रम नहीं होता. साथ ही, इसमें पासकोड का हिसाब लगाने के लिए ज़रूरी एल्गोरिदम की जानकारी भी पैरामीटर ऑब्जेक्ट के तौर पर सेव होती है. इसलिए, Tink में पूरी AES-EAX कुंजी और पूरी AES-GCM कुंजी, अलग-अलग ऑब्जेक्ट हैं.