【发布时间】: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