Ich habe einen öffentlichen RSA-Schlüssel im PEM-Format + PKCS # 1 (ich glaube) zu lesen:Wie ein öffentlichen RSA-Schlüssel in PEM + PKCS # 1-Format
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k
onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+zn
JDEbNHODZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE=
-----END RSA PUBLIC KEY-----
ich den SHA1-Digest erhalten möge von seine ASN1-codierte Version in Python. Der erste Schritt sollte sein, diese Schlüssel zu lesen, aber ich scheiterte es in PyCrypto zu tun:
>> from Crypto.PublicKey import RSA
>> RSA.importKey(my_key)
ValueError: RSA key format is not supported
Die documentation of PyCrypto sagt PEM + PKCS # 1 unterstützt wird, also bin ich verwirrt. Ich habe auch M2Crypto ausprobiert, aber es stellt sich heraus, dass M2Crypto nicht PKCS # 1, sondern nur X.509 unterstützt.
Es wird über PEM_write_bio_RSAPublicKey in OpenSSL erzeugt. Ich glaube, es ist ein gültiger PEM-Schlüssel, und ich habe es mit Python-rsa gelesen. –
Ab Version 2.6 kann PyCrypto auch RsaPublic-Schlüsselobjekte importieren, so dass der obige Code nicht mehr benötigt wird. – SquareRootOfTwentyThree
Mit Python 3 gibt die ASN1-Dekodierung Bytes zurück, während 'Konstrukt' Ints benötigt. Welche Byte-Reihenfolge wird verwendet? –