आपको PyCrypto
या PyMe
की आवश्यकता नहीं है, ठीक है, हालांकि ये पैकेज हो सकते हैं - आपको विंडोज़ के तहत सभी प्रकार की समस्याएं हो सकती हैं। इसके बजाय, खरगोश-छेद से बचें और मैंने क्या किया? gnupg 1.4.9
का प्रयोग करें। आपको एंड-यूजर मशीनों पर पूर्ण इंस्टॉलेशन करने की आवश्यकता नहीं है - वितरण से gpg.exe
और iconv.dll
पर्याप्त हैं, और आपको बस पथ में कहीं भी होना चाहिए या पूर्ण पथनाम का उपयोग करके अपने पायथन कोड से एक्सेस करना होगा। रजिस्ट्री में कोई भी परिवर्तन आवश्यक नहीं है, और यदि आप चाहें तो सब कुछ (एक्जिक्यूटिव और डेटा फाइल) को एक फ़ोल्डर में ही सीमित किया जा सकता है।
एक मॉड्यूल GPG.py
है जिसे मूल रूप से एंड्रयू कुचलिंग द्वारा लिखा गया था, जिसे रिचर्ड जोन्स द्वारा बेहतर किया गया था और स्टीव ट्रुगॉट द्वारा आगे बढ़ाया गया था। यह here उपलब्ध है, लेकिन जैसा कि यह विंडोज के लिए उपयुक्त नहीं है क्योंकि यह os.fork()
का उपयोग करता है। हालांकि मूल रूप से PyCrypto
का हिस्सा, यह PyCrypto
के अन्य हिस्सों से पूरी तरह से स्वतंत्र है और काम करने के लिए केवल gpg.exe/iconv.dll की आवश्यकता है।
मेरे पास एक संस्करण (gnupg.py
) है जो ट्रागॉट के GPG.py
से लिया गया है, जो subprocess
मॉड्यूल का उपयोग करता है। यह Windows के तहत ठीक काम करता है, कम से कम मेरी प्रयोजनों के लिए - मैं इसका इस्तेमाल निम्न कार्य करें:
- कुंजी प्रबंधन - पीढ़ी, लिस्टिंग, निर्यात आदि
- किसी बाहरी स्रोत से आयात कुंजी (जैसे सार्वजनिक कुंजी प्राप्त एक साथी कंपनी से)
- एन्क्रिप्ट और डेटा को डिक्रिप्ट
- प्रवेश करें और सत्यापित हस्ताक्षर
मॉड्यूल मुझे मिल गया है अभी दिखाने के लिए आदर्श नहीं है, क्योंकि यह कुछ अन्य सामान जो नहीं होना चाहिए शामिल वहाँ ई - जिसका मतलब है कि मैं इस समय इसे जारी नहीं कर सकता हूं।कुछ बिंदु पर, शायद अगले कुछ हफ्तों में, मैं इसे साफ करने में सक्षम होने की उम्मीद करता हूं, कुछ और यूनिट परीक्षण जोड़ें (उदाहरण के लिए मेरे पास साइन/सत्यापित करने के लिए कोई यूनिट परीक्षण नहीं है) और इसे जारी करें (या तो नीचे मूल PyCrypto
लाइसेंस या एक समान वाणिज्यिक-अनुकूल लाइसेंस)। यदि आप प्रतीक्षा नहीं कर सकते हैं, तो ट्रगॉट के मॉड्यूल के साथ जाएं और इसे स्वयं संशोधित करें - यह subprocess
मॉड्यूल के साथ काम करने के लिए बहुत अधिक काम नहीं था।
यह दृष्टिकोण दूसरों की तुलना में बहुत कम दर्दनाक था (जैसे SWIG
आधारित समाधान, या समाधान जो MinGW
/MSYS
साथ निर्माण की आवश्यकता होती है) है, जो मैं माना जाता है और साथ प्रयोग किया। मैंने वही उपयोग किया है (gpg.exe
/iconv.dll
) अन्य भाषाओं में लिखे गए सिस्टम के साथ दृष्टिकोण, उदा। C#
, समान रूप से दर्द रहित परिणाम के साथ।
पीएस यह पायथन 2.4 के साथ ही पायथन 2.5 और बाद में काम करता है। अन्य संस्करणों के साथ परीक्षण नहीं किया गया है, हालांकि मुझे किसी भी समस्या का पता नहीं लगा है।
स्रोत
2009-06-27 22:12:35
धन्यवाद जो सही लगता है। मुझे नहीं पता था कि मैं सिर्फ जीजीपी से बाहर निकल सकता हूं। यह कीरिंग कहां रखेगा? यदि उपयोगकर्ता पहले से ही जीजीपी स्थापित है तो क्या यह विधि किसी भी समस्या का कारण बन जाएगी? कोई मौका मैं देख सकता था कि आपका कोड कुंजी पीढ़ी कैसे करता है, और महत्वपूर्ण आयात करता है? – Greg
जब भी आप अपना अंतिम कोड जारी करते हैं तो हमें यहां अपडेट करना भी सुनिश्चित करें। – Greg
जब आप gpg कहते हैं, तो पथ निर्दिष्ट करें जहां आप --homedir तर्क का उपयोग करके कीरिंग को छीनना चाहते हैं। (यह आपके लिए पहले से ही ट्रोगॉट के मॉड्यूल का उपयोग कर किया गया है - एक जीपीजी कक्षा है जिसका कन्स्ट्रक्टर एक gnupghome पैरामीटर लेता है जिसे आप इस निर्देशिका में सेट कर सकते हैं।) Pubring.gpg, secring.gpg और trustdb.gpg द्वारा निर्दिष्ट फ़ोल्डर में बनाया गया है - -homedir। मुझे विश्वास नहीं है कि अगर उपयोगकर्ता पहले से ही gpg पहले से स्थापित है तो समस्या का कारण बन जाएगा - - homedir तर्क रजिस्ट्री में किसी भी मान को ओवरराइड करना चाहिए। –