2016-10-30 20 views
0

私は、「鍵ペア生成」をsecp192r1カーブを使用して実装します。 しかし、秘密鍵は公開鍵のように文字列形式では表示されませんでした。私を助けてください。 enter image description hereありがとうございます。あなたはそのopensslの文字列表現を取得する前に、PEM形式に秘密鍵を変換する必要がありますECC鍵ペア - 秘密鍵の印刷方法は?

package lam.bk; 
import java.security.*; 
import java.security.spec.*; 

public class ECCKeyGeneration { 
    public static void main(String[] args) throws Exception { 
     KeyPairGenerator kpg; 
     kpg = KeyPairGenerator.getInstance("EC","SunEC"); 
     ECGenParameterSpec ecsp; 
     ecsp = new ECGenParameterSpec("secp192r1"); 
     kpg.initialize(ecsp); 

     KeyPair kp = kpg.genKeyPair(); 
     PrivateKey privKey = kp.getPrivate(); 
     PublicKey pubKey = kp.getPublic(); 

     System.out.println(pubKey.toString()); 
     System.out.println(privKey.toString()); 
    } 
} 
+0

ようこそ!良い質問をするのを助けるために私たちの[SO Question Checklist](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)をよく読んで、良い答えを得てください。 –

答えて

0

は、ここに私のコードです。 Javaでは、あなたが使用して、プログラム的にこれを行うことができますはBouncyCastleライブラリのPEMWriter

0

secp192r1カーブのための意志の出力以下のコード24バイトの秘密鍵:スタックオーバーフローへ

private String getPrivateKeyAsHex(PrivateKey privateKey) { 

    ECPrivateKey ecPrivateKey = (ECPrivateKey) privateKey; 
    byte[] privateKeyBytes = new byte[24]; 
    writeToStream(privateKeyBytes, 0, ecPrivateKey.getS(), 24); 

    return Hex.toHexString(privateKeyBytes); 
} 

private void writeToStream(byte[] stream, int start, BigInteger value, int size) { 
    byte[] data = value.toByteArray(); 
    int length = Math.min(size, data.length); 
    int writeStart = start + size - length; 
    int readStart = data.length - length; 
    System.arraycopy(data, readStart, stream, writeStart, length); 
}