我正在嘗試實施Diffie Hellman密鑰交換協議。目前我被困在公共參數世代。
每次運行該程序時,p和g參數都是相同的(儘管方法文檔中提到「這將在每次調用時生成一個新的密鑰對」)。爲什麼Diffie Hellman公共參數在每次執行時都相同?
可以請別人向我解釋我在這裏錯過了什麼?
KeyPairGenerator kpg;
try
{
kpg = KeyPairGenerator.getInstance("DiffieHellman");
kpg.initialize(512, new SecureRandom());
KeyPair dkp = kpg.generateKeyPair();
DHParameterSpec params =
((javax.crypto.interfaces.DHPublicKey) dkp.getPublic()).getParams();
BigInteger p = params.getP();
BigInteger a = params.getG();
System.out.println(p);
} catch (Exception e)
{
e.printStackTrace();
}
Java平臺的實現只需要1024塊的密鑰大小來實現DiffieHellman。雖然這在實現中幾乎沒有區別,但是您是否可以嘗試使用1024的密鑰大小進行初始化,然後查看會發生什麼?也儘量不要調用初始化(它會使用默認的初始化) – SirRichie