2010-04-03 11 views
9

यहाँ बात है "मक्खी पर" इसका इस्तेमाल: मेरी Qt4.6-परियोजना में, मैं एक SQLite-डेटाबेस का उपयोग करें। यह डेटाबेस मेरे हार्डड्राइव पर अनएन्क्रिप्टेड नहीं होना चाहिए। तो मैं चाहता हूं कि, मेरे कार्यक्रम की हर शुरुआत पर, उपयोगकर्ता को डेटाबेस को डिक्रिप्ट करने के लिए पासवर्ड दर्ज करने के लिए कहा जाता है। बेशक डेटाबेस को मेरे हार्डड्राइव पर "स्पष्ट में" (एन्क्रिप्टेड नहीं) दिखाई देना चाहिए।
तो क्या "फ्लाई पर" SQLite-डेटाबेस को डिक्रिप्ट करने और डेटा पढ़ने और लिखने की कोई संभावना है? क्या एल्गोरिदम सबसे अच्छा है (शायद एईएस)?
जब यह संभव नहीं है (या बहुत धीमी), तो डेटाबेस में प्रत्येक स्ट्रिंग को एन्क्रिप्ट करना बेहतर होता है और पासवर्ड सही होने पर स्ट्रिंग को डिक्रिप्ट करना बेहतर होता है (ताकि उपयोगकर्ता डेटाबेस खोल सके, लेकिन इसमें कोई संकेत नहीं है कि सभी प्रविष्टियां क्या कर सकती हैं मतलब)?एन्क्रिप्ट/डिक्रिप्ट SQLite-डेटाबेस और

उत्तर

11

कोई समर्थन नहीं हुआ है, कहा जा रहा है कि आपके पास विकल्प हैं।

1) आप अपने सभी तारों को स्वयं एन्क्रिप्ट/डिक्रिप्ट कर सकते हैं, लेकिन यह बहुत काम है, पारदर्शी नहीं है, और आपको डेटाबेस में खोज जैसी चीजों को करने की अनुमति नहीं देगा।

2) SQLiteCrypt और SQLCipher आप जो खोज रहे हैं है।

आप उन्हें लगभग पूरी तरह से पारदर्शी उपयोग कर सकते हैं और आम तौर पर वे केवल लगभग 5% भूमि के ऊपर एन्क्रिप्शन के बिना तुलना में कहा जाता है।

+0

लेकिन जब मैं एक अलग एपीआई का उपयोग करता हूं, तो मेरे पास क्यूटी और SQLite की "उपयोगिता" नहीं है, है ना? – Berschi

+1

@ बर्सची: आपको शायद क्यूटी में स्क्लाइट घटक का पुनर्निर्माण करना होगा, लेकिन वे इस तरह की जरूरतों के लिए स्रोत प्रदान करते हैं। मुझे लगता है कि इन घटकों में से किसी एक का उपयोग करने की कोशिश करना आपकी सबसे अच्छी शर्त होगी। –

+0

आपको sqllite ड्राइवर का उपयोग करने और SQLLitCrypt या SQLCipher द्वारा प्रदान की गई sqllite के विरुद्ध संकलित करने में सक्षम होना चाहिए। आप शायद कनेक्शन स्ट्रिंग में कुछ पासवर्ड सुविधा एम्बेड कर सकते हैं, या ड्राइवर वर्ग का विस्तार कर सकते हैं और सीधे विस्तारित कार्यों के लिए ड्राइवर को कॉल कर सकते हैं –

2

FUSE - "उपयोगकर्ता-भूमि में फाइल सिस्टम" का उपयोग करने के लिए सबसे अच्छा तरीका है - लिनक्स, मैक ओएस एक्स और अन्य सिस्टम, या एक अलग एन्क्रिप्टेड फ़ाइल-सिस्टम के लिए उपलब्ध है। डिस्क पर भौतिक रूप से एन्क्रिप्टेड होने पर यह SQLite को इसे अनएन्क्रिप्टेड के रूप में देखेगा। अनुमतियों के साथ खेलकर आप सुनिश्चित कर सकते हैं कि लोग अनियंत्रित फ़ाइल सिस्टम तक नहीं पहुंच सकते हैं।

मैं अगर SQLite एक तरह से करने के लिए निम्न स्तर के पढ़ने/लिखने दिनचर्या जो आप फाइल सिस्टम खेल के बिना मक्खी पर एन्क्रिप्शन को लागू करने की अनुमति देगा ज्यादा की सवारी है यकीन नहीं है। कम से कम मुझे ऐसा करने की आवश्यकता नहीं थी। आप ऐसे फीचर अनुरोध की खोज कर सकते हैं और इसे एक फ़ाइल कर सकते हैं यदि यह SQLite समस्या ट्रैकर में नहीं है।

4

मैं आपके पुस्तकालय का उपयोग करने का सुझाव दूंगा जो आपके लिए यह आपके एन्क्रिप्शन में निर्माण करने के बजाय करता है।

http://www.hwaci.com/sw/sqlite/see.html या http://sqlite-crypt.com/documentation.htm

कुछ विकल्प के लिए अपने पसंदीदा खोज इंजन का उपयोग करें।

1

एक अतिरिक्त विकल्प SQLite एन्क्रिप्शन कोडेक है कि Botan 1.9.x (src/रैप/SQLite) के साथ आता है किया जाएगा।

विकल्प आपको संकलन समय पर एन्क्रिप्शन प्रकार, सिफर और मोड सहित अनुकूलित करने की क्षमता देता है यही कारण है कि।

प्रकटीकरण: मैंने बोटन को कोडेक का योगदान दिया।

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