संक्षिप्त उत्तर यह है कि SEAL में सिफरटेक्स्ट डेटा तक पहुँचने का कोई अन्य तरीका नहीं है। सूचक Ciphertext::data
. द्वारा लौटाया गया आपको सिफरटेक्स्ट डेटा तक सीधी पहुंच प्रदान करेगा और उस अर्थ में आपको उस पर किसी भी प्रकार की गणना करने की अनुमति देता है, उदा। मानव-पठनीय स्ट्रिंग में कनवर्ट करना यदि किसी कारण से आप ऐसा करना चाहते हैं।
बेशक कुछ भी समझदार करने के लिए आपको सिफरटेक्स्ट के डेटा लेआउट को जानना होगा। बीएफवी योजना में एक सिफरटेक्स्ट में बहुपदों की एक जोड़ी होती है (c0 , सी<उप>1उप> ) बड़े के साथ (आकार coeff_modulus
) गुणांक। चूंकि इतने बड़े गुणांक वाले बहुपदों पर संचालन करना असुविधाजनक है, SEAL 2.3.1 इसके बजाय एक समग्र coeff_modulus
का उपयोग करता है और c0 . दोनों को स्टोर करता है और c1 मॉड्यूल coeff_modulus
. में निर्दिष्ट प्रत्येक प्रमुख कारक (इन कारकों को निरूपित करें q1 ,क्यू<उप>2उप> ,...,q<उप>केउप> ) प्रत्येक क्यू<उप>मैंउप> एक 64-बिट शब्द में फिट बैठता है, इसलिए इन सभी 2k बहुपदों में शब्द-आकार गुणांक होते हैं।
सिफरटेक्स्ट गुणांक डेटा लेआउट इस प्रकार है (स्मृति में सन्निहित):
[ ग<उप>0उप> मॉड क्यू<उप>1उप> ][सी<उप>0उप> मॉड क्यू<उप>2उप> ]...[ ग<उप>0उप> मॉड क्यू<उप>केउप> ][सी<उप>1उप> मॉड क्यू<उप>1उप> ][सी<उप>1उप> मॉड क्यू<उप>2उप> ]...[ ग<उप>1उप> मॉड क्यू<उप>केउप> ]
जहां प्रत्येक [ ci मॉड क्यू<उप>जेउप> ] जैसा दिखता है
[ ग<उप>0उप> [0] मॉड क्यू<उप>जेउप> ][सी<उप>1उप> [0] मॉड क्यू<उप>जेउप> ]...[ ग<उप>एन-1उप> [0] मॉड क्यू<उप>जेउप> ]
यहाँ मैंने ci . का उपयोग किया है [k] ci . की डिग्री k गुणांक को निरूपित करने के लिए . ध्यान दें कि प्रत्येक गुणांक uint64_t
. में संग्रहीत होता है .
Ciphertext::data
c0 . के स्थिर गुणांक के लिए एक सूचक लौटाता है आपके coeff_modulus
. में पहले मापांक के संबंध में बहुपद , यानी c0 . तक [0] मॉड क्यू<उप>1उप> . इस गुणांक डेटा के अलावा, सिफरटेक्स्ट में कुछ अन्य फ़ील्ड होते हैं जिन्हें आप सदस्य फ़ंक्शन का उपयोग करके पढ़ सकते हैं।