2010-09-11 12 views
7

के साथ पासवर्ड संग्रहीत करना मेरे पास एक प्रोग्राम है जिसे मैं अजगर में लिख रहा हूं, और मुझे कुछ पासवर्ड स्टोर करने की आवश्यकता है। ये पासवर्ड सर्वर FTP के लिए पासवर्ड होंगे, इसलिए यह महत्वपूर्ण है कि वे सभी के लिए स्पष्ट रूप से दिखाई न दें। इसका यह भी अर्थ है कि मैं पासवर्ड के एक गैर-परिवर्तनीय हैश को स्टोर नहीं कर सकता जैसा कि आप वेबसर्वर पर करेंगे, क्योंकि मैं जांच नहीं कर रहा हूं कि कोई सही पासवर्ड इनपुट करता है, मैं बस किसी और को पासवर्ड रिले कर रहा हूं।
तो पासवर्ड स्टोर करने का सबसे अच्छा तरीका क्या है? मैं अजगर का उपयोग कर रहा हूं, और कार्यक्रम केवल लिनक्स होगा।पायथन

+0

देखें http://stackoverflow.com/questions/721436/whats-a-good-two-way-encryption-library-implemented-in-python। – gimel

उत्तर

2

वितरण के आधार पर आप शायद इसे उपलब्ध होने पर कीचेन में स्टोर कर सकते हैं।

अन्यथा एन्क्रिप्शन उपलब्ध एल्गोरिदम (पीजीपी/GPG, डेस, एईएस आदि) और उनके अजगर बंदरगाहों/मॉड्यूल में से कुछ पर एक नज़र डालें, लेकिन यह मुश्किल सामान है जो आप है सही करने के लिए है।

+0

हां अपना खुद का लिखने के बजाय ओएस प्रदान की गई सेवा का उपयोग करें। – Mark

+1

मैं इसे जितना संभव हो उतने distros पर काम करना चाहूंगा। – Carnberry

+0

यदि आप पीजीपी या एईएस या जो कुछ भी इस्तेमाल करते हैं, तो क्या आपको पासवर्ड को डीकोड करने के लिए पायथन स्क्रिप्ट में पासवर्ड स्टोर नहीं करना है, तो कोई व्यक्ति सिर्फ पाइथन स्रोत फ़ाइल खोल सकता है और पासवर्ड को डीकोड करने के लिए कुंजी पढ़ सकता है? – Carnberry

2

वहाँ सुविधाजनक और असुरक्षित तरीका है: बस प्लेन टेक्स्ट के रूप में उन्हें स्टोर और आप वास्तव में एफ़टीपी उपयोग कर रहे हैं (और नहीं, उदाहरण के SFTP के लिए) तो वे मशीन वे पर होस्ट किया गया है के रूप में के रूप में सुरक्षित है जो न मतलब है वास्तव में बहुत हो जाएगा (सुरक्षित)। एफ़टीपी को उस समय लिखा गया था जब तार पर सादा पाठ भेजना "पर्याप्त सुरक्षित" माना जाता था; वो दिन चले गए। यहां तक ​​कि पायथन स्रोत में सादे टेक्स्ट पासवर्ड को एन्कोड करने से वास्तव में आपकी मदद नहीं होती है क्योंकि किसी बिंदु पर आपको उन्हें अन-एन्कोड करना होता है।

सुरक्षित विधियों को थोड़ा और सेटअप की आवश्यकता है। यहां एक decent tutorial है, मुझे उम्मीद है कि बेहतर लोग हैं।

5

आप सिस्टम की मुख्य अंगूठी का उपयोग कर सकते हैं, उदा। गनोम की अंगूठी या केडीई वॉलेट।

keyring नामक एक पायथन मॉड्यूल है जो एकाधिक कुंजी रिंग प्रदाताओं का समर्थन करता है। मैंने केवल विंडोज़ पर कोशिश की है, जहां यह अभी तक सही तरीके से काम नहीं करता है। ऐसा लगता है कि विकास बहुत सक्रिय नहीं है, लेकिन आपको इसे आज़माएं। आप पैकेज "पायथन-gnomekeyring" भी कोशिश कर सकते हैं जो कि GNOME और अधिक निम्न स्तर के लिए विशिष्ट है।

+0

धन्यवाद से एन्क्रिप्ट कर सके, यह वही है जो मैं अपनी पायथन स्क्रिप्ट को सुरक्षित करने के लिए देख रहा हूं :) –

+0

मैंने 'कीरिंग' को एक त्वरित स्पिन दिया और ऐसा लगता है कि यह पूरी तरह से काम करता है। क्या आप अपने उत्तर का पुनरीक्षण कर सकते हैं, या तो 'कीरिंग' (या एक बेहतर मॉड्यूल यदि आपको मिला है) का समर्थन करने के लिए, या अधिक विशेष रूप से विस्तार से जो आपने पाया है, उसके साथ काम नहीं करता है? – ArtOfWarfare

+1

मैंने ओएस एक्स और विंडोज दोनों पर 'कीरिंग' का परीक्षण किया है और ऐसा लगता है कि प्रत्येक प्लेटफार्म पर यह बेकार ढंग से काम करता है। मैंने कार्यान्वयन की भी जांच की (चूंकि यह शुद्ध पायथन है, यह काफी आसान है) और मैं इसके बारे में कुछ भी नहीं देख सकता। – ArtOfWarfare

-4

मैं एक हैश पासवर्ड को हैशिंग करने की अनुशंसा करता हूं, इसलिए पासवर्ड का सादा पाठ संस्करण (एन्क्रिप्शन के विपरीत) को खोजने के लिए वापस काम नहीं किया जा सकता है। MD5 एक एल्गोरिदम है जिसे मैं पसंद करता हूं और पहले ही पाइथन में लागू किया गया है। आप हैश में हमेशा नमक जोड़ सकते हैं जैसे abdPasswordABDA जहां पासवर्ड पासवर्ड है। फिर हैश को किसी फ़ाइल या डेटाबेस में संग्रहीत करें और चेक होने से पहले इसे फिर से हश करें। SHA1 एक और हैशिंग एल्गोरिदम है जिसका आप उपयोग कर सकते हैं।
डीन

+3

वह हैश का उपयोग नहीं कर सकता, क्योंकि वह पासवर्ड की आपूर्ति कर रहा है, उन्हें जांच नहीं रहा है। –

+0

प्रमाणीकरण के लिए एक हैशड पीडब्ल्यू का उपयोग करने में मदद नहीं करता है क्योंकि ये अभी भी आपके डीबी तक पहुंच प्रदान करता है। – RickyA

0

लिनक्स पर netrc चेक आउट (प्रयोग आदमी या this) और फिर this Python module

पर देखने netrc उपयोगकर्ता और पासवर्ड डाले बिना उचित जानकारी आप आदेश पंक्ति पर एफ़टीपी का उपयोग कर सकते है - वे कर रहे हैं फाइल में देखा कुछ चीजें ध्यान दें: फ़ाइल केवल उपयोगकर्ता को पढ़ने/लिखने के लिए प्रतिबंधित है (0600) या इसे ftp द्वारा अस्वीकार कर दिया जा सकता है। यदि यह काम करता है, तो आप इसे पायथन से उपयोग करने के लिए तैयार हैं।

एफटीपी से पूरी तरह से बचने के लिए एक बेहतर विचार होगा (जहां सादा पाठ में पासवर्ड भेजा जाता है) और sftp का उपयोग करें। अपनी सार्वजनिक कुंजी को प्रत्येक लक्ष्य मशीन पर पाइथन स्क्रिप्ट चलाने वाली मशीन से कॉपी करें और एसएसएच को स्वचालित रूप से सुरक्षित फैशन में आपके लिए लॉगिन करने दें।