Когда я пытаюсь сделать закрытый ключ ECC из массива байтов, я получаю исключение, упомянутое ниже. У меня есть открытые/закрытые ключи и выведенный вывод из библиотеки C micro-ecc/uECC.h. C используется кривая secp192r1. Я пытаюсь проверить данные с С сгенерированными ключами в Java. Как преобразовать массив байтов в закрытый/открытый ключ?Байт байта Java в ECCPrivateKey - InvalidKeySpecException: закодированный ключ не распознан
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
byte[] kb = new byte[]{(byte)0x24, (byte)0xF4, (byte)0x36, (byte)0x16, (byte)0xD0, (byte)0x96, (byte)0x12, (byte)0x63, (byte)0x90, (byte)0x2E, (byte)0x51, (byte)0xF6, (byte)0x87, (byte)0x55, (byte)0xAB, (byte)0xCB, (byte)0x5D, (byte)0xAC, (byte)0x56, (byte)0x1A, (byte)0xA5, (byte)0xFA, (byte)0x55, (byte)0xDB};
X509EncodedKeySpec ks = new X509EncodedKeySpec(kb);
KeyFactory kf = java.security.KeyFactory.getInstance("ECDH", "BC");
org.bouncycastle.jce.interfaces.ECPrivateKey remotePublicKey = (org.bouncycastle.jce.interfaces.ECPrivateKey)kf.generatePublic(ks);
java.security.spec.InvalidKeySpecException: encoded key spec not recognised
at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source)
at java.security.KeyFactory.generatePublic(KeyFactory.java:328)
Кроме того, я пытался использовать
KeyFactory.getInstance("ECDH", "BC");
, но он бросает то же самое исключение выше.
KeyFactory.getInstance("EC");
бросает
java.security.InvalidKeyException: invalid key format
или
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : DerInputStream.getLength(): lengthTag=116, too big.
Откуда у вас был массив байтов? – vojta
У меня есть открытые/закрытые ключи и выведенный вывод в C librarary micro-ecc/uECC.h. Я пытаюсь проверить это на Java. – Justas
C используется secp192r1, но я не знаю, нужно ли его предоставлять при загрузке открытого/закрытого ключа на Java и как это сделать. – Justas