2008-10-25 6 views
5

सोचें मुझे कस्टम एन्क्रिप्टेड आरएसए कुंजी बनाने के बारे में पता है, लेकिन मैं एसएस-कीजेन की तरह एन्क्रिप्टेड कैसे पढ़ सकता हूं?रुबी

मैं जानता हूँ कि मैं यह कर सकता:

OpenSSL::PKey::RSA.new(File.read('private_key')) 

लेकिन तब OpenSSL मुझे पदबंध के लिए पूछता है ... मैं कैसे एक पैरामीटर के रूप में OpenSSL करने के लिए इसे पारित कर सकते हैं?

और, मैं ssh-keygen द्वारा जेनरेट किए गए लोगों के लिए एक संगत कैसे बना सकता हूं?

मैं निजी एन्क्रिप्टेड कुंजी बनाने के लिए कुछ इस तरह करते हैं: OpenSSL द्वारा उत्पन्न

pass = '123456' 
key = OpenSSL::PKey::RSA.new(1024) 
key = "0000000000000000#{key.to_der}" 
c = OpenSSL::Cipher::Cipher.new('aes-256-cbc') 
c.encrypt 
c.key = Digest::SHA1.hexdigest(pass).unpack('a2' * 32).map {|x| x.hex}.pack('c' * 32) 
c.iv = iv 
encrypted_key = c.update(key) 
encrypted_key << c.final 

इसके अलावा, चाबियाँ :: PKey :: RSA.new (1024) (एन्क्रिप्शन के बिना), जब काम नहीं करते मैं पासवर्ड-कम लॉग इन आज़माएं (यानी, मैं सर्वर पर सार्वजनिक कुंजी कॉपी करता हूं और लॉगिन करने के लिए निजी का उपयोग करता हूं)।

इसके अलावा, जब मैं ओपनएसएसएल के माध्यम से एक एसएसएच-कीजेन फ़ाइल खोलता हूं और फिर इसकी सामग्री जांचता हूं, तो ऐसा लगता है कि कुंजी के प्रारंभ और अंत में अतिरिक्त वर्ण हैं। क्या यह सामान्य है?

मैं वास्तव में कुछ सुरक्षा सामग्री को समझ नहीं पा रहा हूं, लेकिन मैं सीखने की कोशिश कर रहा हूं। क्या है कि मैं गलत कर रहा हूँ?

उत्तर

-3

मैंने इस पर कुछ प्रगति की है। अगर मैं नेट :: SSH पुस्तकालय का उपयोग करें, मैं यह कर सकता:

Net::SSH::KeyFactory.load_private_key 'keyfile', 'passphrase' 

मैं अभी तक यह पता लगाने की क्या पुस्तकालय OpenSSL के PKey के लिए करता है स्रोत कोड पढ़कर :: RSA.new यह पूरा करने के .. और फिर मैं फिर से परीक्षण करता हूं, और निश्चित रूप से परीक्षण करता हूं, ओपनएसएसएल निजी कुंजी को नेट :: एसएसएच के बिना ठीक कर सकता है ... मैंने इतने सारे परीक्षण किए हैं कि किसी भी तरह से मैंने पहले इसका परीक्षण नहीं किया था।

लेकिन मुझे अभी भी एक एसएसएच संगत कुंजी जोड़ी बनाने का मुद्दा है ... और शायद मैं फिर से परीक्षण करूंगा और जवाब दूंगा: पी ... नहीं, मुझे उस भाग में दिलचस्पी नहीं है