2016-03-27 12 views
1

ile ECDSA anahtarlığı oluştururken eğri seçimi Java (7) tuş takımı kullanarak bir anahtar çifti oluştururken ECDSA eğrisini nasıl seçebilirim anlamaya çalışıyorum.Java keytool

Ayrıca, varsayılan ayarlarla hangi eğrinin kullanıldığını bulmak da yardımcı olur.

keytool -genkeypair -keyalg EC -alias myAlias -keystore myKeystore.jks -storepass myStorepass -keypass myKeypass -validity 730 -keysize 256 -dname "CN=myCn, OU=myOu, O=myO, C=myC" -v 

cevap

-1

Oracle Java 7 uygulanmasını temin sadece SEC eğrileri kullanır: Burada

Kullandığım komuttur. Bunlar NIST standartlaştırılmış eğrileri ile aynıdır. Sizin durumunuzda P-256'nın kullanıldığı kesindir. Ancak Java'da orijinal SEC adı kullanılır: "secp256r1".


Yani almak ve özel anahtarı kodlamak olabilir: Sonra

KeyStore store = KeyStore.getInstance("JKS"); 
store.load(new FileInputStream(args[0]), args[1].toCharArray()); 
ECPrivateKey key = (ECPrivateKey) store.getKey(args[2], args[3].toCharArray()); 
System.out.println(Base64.getEncoder().encodeToString(key.getEncoded())); 

ASN.1 decode içeriği: 1.2: İkinci nesne tanımlayıcısı (OID) için

SEQUENCE (3 elem) 
    INTEGER 0 
    SEQUENCE (2 elem) 
    OBJECT IDENTIFIER 1.2.840.10045.2.1 
    OBJECT IDENTIFIER 1.2.840.10045.3.1.7 
    OCTET STRING (1 elem) 
    SEQUENCE (2 elem) 
     INTEGER 1 
     OCTET STRING (32 byte) E935A4475D495ADA18A791C1222D5A3424CF540BDE42802F588C664082D10808 

Sonra lookup the value. 840.10045.3.1.7:

"SEC 2: Önerilen Eliptik Eğri Etki Alanı Parametreleri" içinde listelenen eliptik eğri etki alanını "secp256r1" kapsar. SEC (Efficient Cryptography için Standartlar) eğrileri, ANSI X9.62, ANSI X9.63, IEEE P1363 ve diğer standartlar gibi ECC standartlarının uygulayıcıları tarafından kullanılmak üzere yaygın olarak gerekli güvenlik düzeylerinde eliptik eğri alanı parametreleri sağlar.

0

EC için bir eğri belirtmek üzere -keysize'u kullanabilirsiniz!

Bunu daha temiz bir şekilde yapmak için bazı Java kodu da yazabilirsiniz.

https://github.com/alokmenghrajani/ec-keytool'a bakın. Bu, belirli eğrilerle JCEKS girdileri oluşturmanızı veya bunları tuş takımının yazdırdığıdan biraz daha iyi bir şekilde görüntülemenizi sağlayan basit bir araçtır.