कुछ चीजें हैं जिन पर मैं ध्यान दूंगा:
-
पूरी तरह से सुनिश्चित करें कि सामग्री और एन्कोडिंग में सादा पाठ समान है। IIRC, डिफ़ॉल्ट रूप से UTF-8 में स्ट्रीम करता है जबकि यदि आपका
VarBinaryToBase64
फ़ंक्शन एक nvarchar पैरामीटर लेता है, यह यूनिकोड होगा। -
सुनिश्चित करें कि दोनों एन्क्रिप्शन एल्गोरिदम समान ब्लॉक आकार का उपयोग करते हैं। SQL में, आप एल्गोरिथम निर्धारित करते हैं जब आप
CREATE SYMMETRIC KEY
. को कॉल करते हैं . यदि आप एक एल्गोरिथ्म निर्दिष्ट नहीं करते हैं, तो यह AES256 का उपयोग करता है। .NET मेंRijndaelManaged
. का उपयोग कर , मेरा मानना है कि डिफ़ॉल्ट ब्लॉक आकार 128 है, लेकिन आप इसे 256 पर सेट कर सकते हैं (यदि आपAes
का उपयोग करते हैं तो आप ऐसा नहीं कर सकते हैं। कक्षा)। -
आखिरी चीज जो मैं देखूंगा वह यह है कि SQL सर्वर प्रारंभिक वेक्टर से कैसे निपटता है जैसा आपने अपनी संशोधित पोस्ट में बताया है। मैं कहना चाहता हूं कि यह
authenticator
. का उपयोग करता है इसके लिए पैरामीटर, लेकिन यह एक बेतुका अनुमान है।
संपादित करें
मैं बहुत दूर था। मैंने जो खोजा है उसे देखते हुए, आप SQL सर्वर के अंतर्निर्मित एन्क्रिप्शन द्वारा एन्क्रिप्ट किए गए टेक्स्ट को डिक्रिप्ट करने के लिए .NET क्लास का उपयोग नहीं कर सकते क्योंकि SQL सर्वर एक यादृच्छिक प्रारंभिक वेक्टर सहित एन्क्रिप्टेड होने के लिए गू का एक गुच्छा जोड़ता है। माइकल कोल की पुस्तक "प्रो टी-एसक्यूएल 2005 प्रोग्रामर गाइड" से (हालाँकि 2008 भी ऐसा ही करता है):