2011-01-07 11 views
5

मैंने स्रोत से कुछ डीएलएस बनाए हैं। वे मुख्य रूप से एक ही स्रोत, स्क्लाइट-3.6.22, ओपन एसएसएल 0.9.8 और वर्गमीटर से हैं।प्लेटफार्मों के बीच भिन्न SQLite एन्क्रिप्शन

कारण मैंने दो का निर्माण किया था कि मुझे सी ++ प्रोजेक्ट के साथ काम करने के लिए एक और जावा के लिए जेडीबीसी ड्राइवर के रूप में एक की जरूरत है (इसलिए एक जावा जेनी डीएल)।

अब मेरे पास दो डीएलएल हैं, मैं सी ++ और सी # (सी एक का उपयोग करके) और डेटाबेस में डेटाबेस लिख और बना सकता हूं। इन दोनों प्रतिक्रियाओं के अनुसार मैं उम्मीद करूँगा, अगर आप सही पासवर्ड देते हैं तो आप उन्हें खोल सकते हैं, अगर आप गलत देते हैं तो यह विफल हो जाता है, आदि सिद्धांत में दोनों सिद्धांतों के लिए डिफ़ॉल्ट होना चाहिए, जो एईएस -256- सीबीसी। हालांकि, मैं एक के साथ एक डेटाबेस बना नहीं सकता। मैं SQLite3 प्रबंधन स्टूडियो में सी संस्करण के साथ बनाया गया डेटाबेस खोल सकता हूं, लेकिन केवल अगर मैंने चयनित आरएसए के साथ पासवर्ड डाला है, तो मैं जावा में बनाए गए किसी भी चीज़ को मेरे पास नहीं खोल सकता।

दूसरी बात यह है कि यदि मैं सी डेटाबेस के साथ समान सामग्री वाले दो डेटाबेस बना देता हूं, तो वे बाइट समान के लिए बाइट हैं, जबकि जावा नहीं हैं।

मुझे यकीन है कि मैं कुछ गलत गलत कर रहा हूं, लेकिन मैं वास्तव में इसे नहीं देख सकता - जहां तक ​​मैं देख सकता हूं कि जावा एक अच्छा काम कर रहा है (किसी कारण से डीबग करना आसान है)।

+0

कृपया 'differening' के भयानक टाइपो क्षमा करें! – Woody

+0

यह सुनिश्चित नहीं है कि मेरा प्रश्न प्रासंगिक है या नहीं। क्या आप जावा के साथ दो अनएन्क्रिप्टेड डेटाबेस बना सकते हैं जो बाइट-फॉर-बाइट समान हैं? –

+0

मैंने आपके शीर्षक टाइपो को ठीक कर दिया है! – CraigTP

उत्तर

1

थोड़ी देर के बाद, क्योंकि यह काफी निराशाजनक था, और आज इसे वापस मिला। sqlite3.dll को डिबग करने से मुझे जवाब मिल जाता है।

यदि आप जावा में जेडीबीसी के माध्यम से इसे एक्सेस कर रहे हैं, तो आपके पास बाइट [] पासवर्ड के लिए महत्वपूर्ण कार्य नहीं हैं, इसलिए एक कथन में PRAGMA कुंजी = '' के माध्यम से पासवर्ड दर्ज करने की आवश्यकता है। यह प्रलेखन से लगता है कि ये समकक्ष हैं और यदि आपको बाइनरी कुंजी की आवश्यकता है, तो आप हेक्स एन्कोड करते हैं और आगे "x" डालते हैं। तो जावा में मैंने:

PRAGMA key="x'899e7c6475756d887a759a93a0a3979a62827e85919898a49394a29c7b88aa8a" 

जबकि सी # में मैं बाइट सरणी में उन बाइनरी अंकों का उपयोग कर रहा था।

यह पता चला है कि स्ट्रिंग का उपयोग पासवर्ड के रूप में शाब्दिक रूप से किया जा रहा है, एक 42 वर्ण पासवर्ड।

तो मैं जावा में डेटाबेस बना सकता हूं और इसे सी # में पढ़ सकता हूं और इसके विपरीत, जब तक मैं बाइनरी पासवर्ड नहीं चाहता, तब तक मैं जावा में उपयोग नहीं कर सकता।

मुझे लगता है कि मुझे किस विधि की आवश्यकता है!

+0

मैं अभी भी उसी नाव में हूं जैसा आप अभी कर रहे हैं। आपने जेडीबीसी और सी # दोनों के माध्यम से एक एन्क्रिप्टेड एसक्लाइट डेटाबेस कैसे पहुंचाया? –

संबंधित मुद्दे