2010-05-13 59 views
0

我正在開發移動/服務器安全相關項目。我現在停留在生成Diffie-Hellman密鑰協議部分。它在服務器端程序中工作正常,但它不適用於移動端。因此,我認爲它與Android不兼容。如何在Android中爲Diffie-Hellman密鑰協議算法生成參數集

我用下面的類來獲取參數。它返回一個由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

+0

您不能在每臺機器上生成不同的域參數。選擇一組域參數並在任何地方使用它們。域參數不是祕密的,您可以在各種NIST和IETF出版物中找到合適的參數。 – 2010-05-13 01:44:40

+0

感謝您的回覆,GregS。實際上,我希望在移動端生成這些參數。因爲它不工作,我在服務器端嘗試了它,它正在工作。因此我想知道這些代碼是否與android不兼容。 – 2010-05-13 01:52:24

+0

定義「不工作」。 – 2010-05-13 01:53:51

回答

0

所揭示的this question DH參數生成是在Android慢得令人難以置信。 (即提問者認爲罪魁禍首被產生new SecureRandom(),但我發現在DHParametersGenerator.generateParameters()緩慢,特別是其對java.math.BigInt.generatePrimeDefault()呼叫。)

而且,提問者顯示瞭如何使用預生成的參數。參數可以是固定的,密鑰對生成器每次仍然會生成一個新的密鑰對。