0

我正在从事与移动/服务器安全相关的项目。我现在正忙于生成 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;
}

问候,
塞比

4

1 回答 1

0

正如这个问题所揭示的, DH 参数生成在 Android 上非常慢。(那个提问者认为罪魁祸首正在生成new SecureRandom(),但我发现 的缓慢DHParametersGenerator.generateParameters(),特别是它对 的调用java.math.BigInt.generatePrimeDefault()。)

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

于 2011-02-04T18:44:48.567 回答