Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Diffie Hellman加密-输出错误_Java_Android_Public Key Encryption_Diffie Hellman - Fatal编程技术网

Java-Diffie Hellman加密-输出错误

Java-Diffie Hellman加密-输出错误,java,android,public-key-encryption,diffie-hellman,Java,Android,Public Key Encryption,Diffie Hellman,我正在尝试实现Diffie-Hellman密钥交换。我有点困惑,一旦生成密钥,如何使用它 从输出中可以看出,这两个密钥是使用与密钥交换中正常相同的素数和基数生成的,并且在生成密钥时使用公钥,但是它们输出的值与我预期的值不同 我对如何实现这种加密方法感到非常困惑,如果能提供一些指导,我将不胜感激。我的总体目标是实现一个加密的SMS Android应用程序 (截图无法捕获a&b的base&prime的整个长度) 字节[]。toString()不打印内容。请尝试Arrays.toString()。您

我正在尝试实现Diffie-Hellman密钥交换。我有点困惑,一旦生成密钥,如何使用它

从输出中可以看出,这两个密钥是使用与密钥交换中正常相同的素数和基数生成的,并且在生成密钥时使用公钥,但是它们输出的值与我预期的值不同

我对如何实现这种加密方法感到非常困惑,如果能提供一些指导,我将不胜感激。我的总体目标是实现一个加密的SMS Android应用程序


(截图无法捕获a&b的base&prime的整个长度)


字节[]。toString()不打印内容。请尝试Arrays.toString()。

您可能首先希望查看您计算机上答案中链接的信息。在一个低质量的示例中尝试和诊断问题可能会遇到更多麻烦。我尝试了实现示例,但它只生成基、素数和指数
AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DH");
paramGen.init(512); // number of bits
AlgorithmParameters params = paramGen.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class); 

BigInteger p512 = dhSpec.getP();
BigInteger g512 = dhSpec.getG();

//A  
KeyPairGenerator akpg = KeyPairGenerator.getInstance("DiffieHellman");

DHParameterSpec param = new DHParameterSpec(p512, g512);
System.out.println("Prime: " + p512);
System.out.println("Base: " + g512);
akpg.initialize(param);
KeyPair kp = akpg.generateKeyPair();

//B
KeyPairGenerator bkpg = KeyPairGenerator.getInstance("DiffieHellman");

DHParameterSpec param2 = new DHParameterSpec(p512, g512);
System.out.println("Prime: " + p512);
System.out.println("Base: " + g512);
bkpg.initialize(param2);
KeyPair kp2 = bkpg.generateKeyPair();


KeyAgreement aKeyAgree = KeyAgreement.getInstance("DiffieHellman");
KeyAgreement bKeyAgree = KeyAgreement.getInstance("DiffieHellman");

aKeyAgree.init(kp.getPrivate());
bKeyAgree.init(kp2.getPrivate());

aKeyAgree.doPhase(kp2.getPublic(), true);
bKeyAgree.doPhase(kp.getPublic(), true);

//System.out.println("Alice Secret Key: " + aKeyAgree.generateSecret());
//System.out.println("Bob's Secret Key: " + bKeyAgree.generateSecret());

MessageDigest hash = MessageDigest.getInstance("SHA-256");

byte[] ASharedSecret = hash.digest(aKeyAgree.generateSecret());
byte[] BSharedSecret = hash.digest(bKeyAgree.generateSecret());

System.out.println("Alice's Shared Secret: " + ASharedSecret.toString());
System.out.println("Bob's Shared Secret: " + BSharedSecret.toString());