2016-03-27 7 views
1

Я пытаюсь понять, как я могу выбрать кривую ECDSA при создании ключевой пары с помощью инструмента Java (7) keytool.Выбор кривой при создании ключевой пары ECDSA с помощью Java keytool

Это также поможет выяснить, какая кривая использовалась с настройками по умолчанию.

Вот команда, я использую:

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 

ответ

-1

Оракул при условии реализации Java 7 использует только кривые SEC. Они идентичны стандартным кривым NIST. В вашем случае наверняка используется P-256. Однако в Java используется исходное имя SEC: "secp256r1".


Таким образом, вы можете получить и зашифровать приватный ключ:

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 содержание:

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 

А затем lookup the value для второго объекта идентификатора (OID): 1.2. 840.10045.3.1.7:

Обложки «secp256r1», область эллиптической кривой, указанная в «SEC 2: рекомендуемые параметры области эллиптической кривой». Кривые SEC (Стандарты для эффективной криптографии) предоставляют параметры домена эллиптической кривой на обычно требуемых уровнях безопасности для использования разработчиками стандартов ECC, такими как ANSI X9.62, ANSI X9.63, IEEE P1363 и другими стандартами.

0

Для EC вы можете использовать -keysize, чтобы указать кривую!

Вы также можете написать код Java, чтобы сделать это более чистым способом.

Посмотрите на https://github.com/alokmenghrajani/ec-keytool. Это простой инструмент, который позволяет создавать записи JCEKS с определенными кривыми или просматривать их таким образом, чтобы он был немного лучше, чем распечатывает keytool.