2011-05-12 11 views

cevap

18

Özel anahtar değerleri ASN.1 INTEGER olarak kodlanır, bunlar iki tamamlama biçiminde değerler olarak imzalanır. (İmzasız) RSA anahtar değerinin MSB'si ayarlandığında, önde gelen sıfır bayt gereklidir. MSB'nin sıfır sıfır bayt olmadan ayarlanması, negatif bir değer anlamına gelir.

ASN.1 özellikleri ücretsizdir ve Wikipedia adresinden bağlanmıştır. İlgili bölüm X.690, "8.3 Tam sayı değerinin kodlanması" şeklindedir.

Bağlantılı sayfanın kaybolması durumunda buraya bir örnek vereceğim. test.der gelen

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

var örnek verileri: OpenSSL varsa

, sen test anahtarlarını üretebilir

30 82 01 3b
ASN.1 DİZİSİNİN, uzunluk 0x13b, içindekiler

izleyin

02 01 00
version: ASN.1 INTEGER, saklanan uzunluk 1, değer 0

02 41 00 c0 8e ... (65 veri bayt)
modülü: ASN.1 integer, depolanan uzunluk 65, değer 0xc08e ... (modül, çünkü gerekli sıfır bayt gelen> 2^511)

02 03 01 00 01
halka üstel:

02 41 00 b5 87 ... (65 veri bayt)
özel örnek 0x10001 (üs < 2^23, çünkü gerekli değildir sıfır bayt gelen): 0xb587 ...

02 21 00 e7 18 ... (33 veri bayt)
prime1: 0xe718 ...

02 21 00 d5 43 ... (33 veri bayt)
prime2: 0xd543 ...

02 20 75 67 a1 ... (32 veri bayt)
exponent1: 0x7567 ... ...

x0af6:
exponent2

02 20 0a f6 3f ... (32 veri bayt) (üs < 2^255, çünkü gelen sıfır bayt gerekli değildir) 10

02 21 00 c7 13 ... (33 veri bayt)
katsayısı: 0xc713 ...

+0

Cevabınız çok iyi açıklanmıştır. Açıklamaları göstermek için openssl kullanımı yararlı oldu. –

+0

no'lu tamsayı ASN.1 DER örneklerinin openssl, ör.: x = 128; openssl asn1parse -genstr "INTEGER: $ x" -noout -out data && hexdump -C data' – mykhal

İlgili konular