تشفير Python غير المتماثل: استخدام مفاتيح PRV/Pub التي تم إنشاؤها مسبقًا

StackOverflow https://stackoverflow.com/questions/3852190

سؤال

حسنًا ، أولاً ، لقد بحثت في Google و Stackoverflow وقمت ببعض القراءة (أكثر من 4 ساعات فقط في هذا الجلوس) لم أجد ما أحتاجه لهذه الأسباب:

  • يقترح الكثير منهم مجرد إطلاق exe مثل gpg.exe (http://stackoverflow.com/questions/1020320)

  • اقترح البعض استخدام pycrypto أو المكتبات الأخرى والنظر إليها ، إما أ) لا يمكنني العثور على كيفية استخدام أي من واجهة برمجة التطبيقات الخاصة بهم ، ب) لا يمكنني العثور على كيفية استيراد مفتاح prv/pub موجود مسبقًا أو ج) استخدم Randompool غير الآمن (وأنا أحاول تحديثه ، إنه مجرد طلب مشكلة)

  • يذكر البعض ذلك في المرور ، لكنني لم أتمكن من العثور على ما يربطون به (أو لم يكن أي رابط على الإطلاق.

لذلك أعلم أن أسألك من مستخدمي Stackoverflow ، كيف يمكنني القيام بذلك ، وأخذ سلسلة من المفاتيح العامة (أو المسار (يمكنني فقط كتابته إلى ملف مؤقت ، (أخطط فقط للحصول عليه كأسلوب pub_key = ".. . "))) واستخدمها للتوقيع وتأمين سلسلة (سيتم نشرها في منتدى (JSON لتحديث طلبي)؟

أيضا هذه هي مفاتيح RSA (المعجون Gen 4096 بت SSH-2-RSA) التي يتم إنشاؤها باستخدام المعجون (يمكن أن يكون بأي شكل (OpenSsh ، Ssh.com ، PPK)

هذا ما يبدو عليه المفتاح العام

---- ابدأ SSH2 المفتاح العمومي ----

تعليق: "RSA-Key-20101003"

AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2 L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0 mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0 MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW dkk9+rrhUy4qrZ+ hfi7aeemybpiumbiumbsnebvnkmaipaoo23v8c9bq0iuxx4gizf10 o+tpsk8 =

---- نهاية SSH2 المفتاح العمومي ----

ليس هذا -> يبدو أن التنسيق الرئيسي هو PKCS1 حتى لا يعمل M2Crypto (تتوقع وظيفة مفتاح التحميل PEM)

أحدث قراءة أعتقد أنها تنسيق ملف مفتاح SSH العمومي (RFC: http://www.ietf.org/rfc/rfc4716.txt )

أعتقد أيضًا أنه خطأ أدناه ، لا أعتقد أنه يتعامل مع تنسيق ملف المفتاح العام SSH :(

يبدو أيضًا أن Twisted قد يكون المكان الذي يجب أن أنظر إليه

http://www.java2s.com/open-source/python/network/twisted/twisted -1.0.3/twisted -1.0.3/twisted/conch/ssh/keys.py.htm

أيضا لماذا لا يسمح لي بنشر مكافأة على الفور ؟؟

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

المحلول

حسنًا ، لقد وجدت كيفية تحميله

from twisted.conch.ssh import keys as Keys
import base64

public_key = """\
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20101003"
AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf
WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu
WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2
L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0
mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA
vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ
SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n
Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0
MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I
MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW
dkk9+rrhUy4qrZ+HFi7AeemybpiumbSnebvnkMaIPAOo23V8C9BQ0iuxx4gIZf10
o+TPSK8=
---- END SSH2 PUBLIC KEY ----"""

key_data = ''.join(public_key.splitlines()[2:-1])# remove begin, end tags and comment
blob = base64.decodestring(key_data)
key = Keys.Key._fromString_BLOB(blob)

نصائح أخرى

يمكنني التفكير في خيارين بسيطين نسبيًا على الأقل

  1. استخدام openssl (أو pyopenssl) لتحويل BER إلى PEM
  2. استخدم paramiko أو twisted أو أي تطبيق python ssh آخر للعمل مع المفاتيح مباشرة
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top