Pin*_*ain 5 java cryptography public-key-encryption diffie-hellman
我正在java中为现有程序编写测试工具.作为其中的一部分,我需要生成一个Diffie Hellman密钥对,并以其原始(即未编码的字节)形式将公钥传递给另一个程序.
我可以使用以下代码成功使用密钥对:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DiffieHellman");
kpg.initialize(512);
KeyPair dkp = kpg.generateKeyPair();
但是,我似乎无法检索键的原始字节值:-(调用dkp.getPublic().getEncoded()返回一个字节数组,但它的键是x509编码格式.
我有三种可能的前进方式:
但我不知道如何去做任何一个(哪个会变得最好)?
任何帮助或建议将不胜感激!
你可以得到这样的X和Y(where Y = G^X mod P)值:
 BigInteger x = ((javax.crypto.interfaces.DHPrivateKey) dkp.getPrivate()).getX();
 BigInteger y = ((javax.crypto.interfaces.DHPublicKey) dkp.getPublic()).getY();
您可以从公钥或私钥获取G和P值,如下所示:
DHParameterSpec params = 
    ((javax.crypto.interfaces.DHPublicKey) dkp.getPublic()).getParams();
BigInteger p = params.getP();
BigInteger g = params.getG();
从那里你可以将它们全部作为原始字节数组:
 byte[] xBytes = x.toByteArray();
 byte[] yBytes = y.toByteArray();
 byte[] pBytes = p.toByteArray();
 byte[] gBytes = g.toByteArray();
公共密钥是Y,P和G的组合.X应该保密.
| 归档时间: | 
 | 
| 查看次数: | 2239 次 | 
| 最近记录: |