如何为Android中的Diffie-Hellman密钥协商算法生成参数集

时间:2010-05-13 01:14:02

标签: java android diffie-hellman

我正致力于移动/服务器安全相关项目。我现在停留在生成Diffie-Hellman密钥协议部分。它在服务器端程序中工作正常,但它不适用于移动端。因此,我认为它不适合Android。

我使用以下类来获取参数。它返回以逗号分隔的3个值的字符串。第一个数是素数模数P.第二个数是基数发生器G.第三个数是随机指数L的位大小。

我的问题是代码有什么问题,或者它不适用于Android?我应该做些什么改变?
您的建议和指导对我非常有帮助。非常感谢。

public static String genDhParams() {
 try {
// Create the parameter generator for a 1024-bit DH key pair
AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DH");
paramGen.init(1024);
// Generate the parameters
AlgorithmParameters params = paramGen.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class);
// Return the three values in a string
return ""+dhSpec.getP()+","+dhSpec.getG()+","+dhSpec.getL();
} catch (NoSuchAlgorithmException e) {
} catch (InvalidParameterSpecException e) {
}
return null;
}

的问候,
Sebby

1 个答案:

答案 0 :(得分:0)

正如this question所揭示的那样,DH参数生成在Android上非常慢。 (那位提问者认为罪魁祸首正在产生new SecureRandom(),但我发现DHParametersGenerator.generateParameters()的速度很慢,特别是对java.math.BigInt.generatePrimeDefault()的调用。)

此外,该提问者展示了如何使用预先生成的参数。参数可以修复,密钥对生成器每次仍会生成一个新的密钥对。