【问题标题】:How To Generate Parameter Set for the Diffie-Hellman Key Agreement Algorithm in Android如何在 Android 中为 Diffie-Hellman 密钥协商算法生成参数集
【发布时间】:2010-05-13 01:14:01
【问题描述】:

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

问候,
塞比

【问题讨论】:

  • 不能在每台机器上生成不同的域参数。选择一组域参数并在任何地方使用它们。域参数不是秘密,您可以在各种 NIST 和 IETF 出版物中找到合适的参数。
  • 感谢您的回复,格雷格。实际上,我希望这些参数在移动端生成。由于它不起作用,我在服务器端尝试了它并且它正在工作。因此,我想知道代码是否不能与 android 兼容。
  • umm.. 它在服务器端程序中生成三个参数。但是在移动端,屏幕变黑了,没有出现。甚至前者都不会生成诸如 nonce 值、从服务器端发送的消息等内容。
  • 嗯,它可能是程序中的其他东西,另外你怎么知道你没有得到你正在吞咽的异常之一。

标签: java android diffie-hellman


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多