Question

Pourquoi le module est-il rembourré avec des zéros de premier plan? Je lisais PKCS # 1 et PKCS # 8 mais je n'ai rien trouvé à ce sujet. En C #, les zéros leader doivent être supprimés, est-ce que quelqu'un sait pourquoi?

À http://etherhack.co.uk/asymmetric/docs/rsa_key_breakdown.html, vous pouvez voir que le module et l'exposant ont des zéros de premier plan. La question est de savoir pourquoi ils l'ont, je n'ai pas encore trouvé d'explication nulle part.

Était-ce utile?

La solution

Les valeurs de clés privées sont codées sous forme de nombres entiers ASN.1, qui sont des valeurs signées dans le format de complément de Two. L'octet zéro leader est nécessaire lorsque le MSB de la valeur de clé RSA (non signée) est défini. Avoir le jeu MSB sans un octet zéro leader signifierait une valeur négative.

Les spécifications ASN.1 sont gratuites et sont liées à partir de Wikipédia. La section pertinente ici est dans X.690, "8.3 Encodage d'une valeur entière".

Je vais fournir un exemple ici au cas où la page liée disparaîtra.

Si vous avez OpenSSL, vous pouvez générer des touches de test avec:

openssl genrsa -out test.pem 512
openssl rsa -in test.pem -out test.der -outform der

Voici des exemples de données de Test.der:

30 82 01 3b
Séquence asn.1, longueur 0x13b, contenu suivant

02 01 00
Version: ASN.1 entier, longueur stockée 1, valeur 0

02 41 00 c0 8e ... (65 octets de données)
Module: ASN.1 entier, longueur stockée 65, valeur 0xc08e ... (octet zéro principal requis car le module est> 2 ^ 511)

02 03 01 00 01
Exposant public: 0x10001 (octet zéro principal non requis car l'exposant est <2 ^ 23)

02 41 00 b5 87 ... (65 octets de données)
Exposant privé: 0xb587 ...

02 21 00 e7 18 ... (33 octets de données)
prime1: 0xe718 ...

02 21 00 d5 43 ... (33 octets de données)
prime2: 0xd543 ...

02 20 75 67 a1 ... (32 octets de données)
Exponent1: 0x7567 ... (Ontte zéro principal non requis car l'exposant est <2 ^ 255)

02 20 0a f6 3f ... (32 octets de données)
Exponent2: 0x0af6 ...

02 21 00 c7 13 ... (33 octets de données)
Coefficient: 0xc713 ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top