سؤال

أنا <م> التفكير أعرف كيفية إنشاء مفاتيح RSA مشفرة مخصصة، ولكن كيف يمكنني قراءة واحدة مشفرة مثل SSH-كجن لا؟

وأنا أعلم أنني يمكن أن تفعل هذا:

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

ولكن بعد ذلك بينسل يسألني عن عبارة المرور ... كيف يمكنني نقله إلى بينسل كمعلمة؟

و، كيف يمكنني إنشاء واحد متوافق مع تلك التي تم إنشاؤها بواسطة سه-كجن؟

وأن أفعل شيئا من هذا القبيل لإنشاء مفاتيح تشفير خاصة:

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) (بدون تشفير)، لا تعمل عندما أحاول تسجيل الدخول كلمة السر أقل (أي I نسخ المفتاح العمومي إلى الخادم واستخدام واحد من القطاع الخاص للدخول).

وأيضا، عندما فتح ملف سه-كجن عبر بينسل ومن ثم تحقق محتوياته، يبدو أن لديها أحرف إضافية في بداية ونهاية المفتاح. هل هذا طبيعي؟

وأنا لا أفهم حقا بعض من هذه الاشياء الأمن، ولكن أنا أحاول أن تعلم. ما الذي أفعله خطأ؟

هل كانت مفيدة؟

المحلول 2

ولقد أحرزنا بعض التقدم في هذا الشأن. إذا كنت تستخدم شبكة الإنترنت :: مكتبة SSH، أستطيع أن أفعل ذلك:

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

ومن خلال قراءة شفرة المصدر لدي حتى الآن لمعرفة ما تقوم به مكتبة لPKEY بينسل ل:: RSA.new لتحقيق ذلك ... وبعد ذلك أذهب واختبار مرة أخرى، والمؤكد، ويمكن بينسل فتح المفتاح الخاص على ما يرام دون نت :: SSH ... لقد اجريت اختبارات الكثير بطريقة أو بأخرى لم أكن اختبار هذا بشكل صحيح من قبل.

ولكن لا يزال لدي قضية خلق SSH متوافق زوج المفاتيح ... وربما سأذهب الاختبار مرة أخرى ويكون الجواب: P ... وقام خلاله، وأنا لست هذا مهتم في هذا الجزء

نصائح أخرى

ووفقا لبلوق وظيفة هنا:

HTTP : //stuff-things.net/2008/02/05/encrypting-lots-of-sensitive-data-with-ruby-on-rails/

وأنت ببساطة يمكنك القيام بها:

وبينسل :: :: PKEY RSA.new (File.read ( 'private_key')، 'عبارة')

وحظا سعيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top