2010-03-10 69 views
3

我現在正在開發一個針對Android的程序,它與IMS有些相關。 我希望服務器以字符串形式向客戶端發送一個隨機數,並將其打印在客戶端。 爲了生成現時值,我嘗試使用此站點的代碼。如何生成NONCE並在Android客戶端打印它

http://www.exampledepot.com/egs/java.security/CreateSecureRandom.html

我的代碼部分是遵循

public static String generateNonce() { 
    try { 
    // Create a secure random number generator 
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 

    // Get 1024 random bits 
    byte[] bytes = new byte[1024/8]; 
    sr.nextBytes(bytes); 

    // Create two secure number generators with the same seed 
    int seedByteCount = 10; 
    byte[] seed = sr.generateSeed(seedByteCount); 

    sr = SecureRandom.getInstance("SHA1PRNG"); 
    sr.setSeed(seed); 
    SecureRandom sr2 = SecureRandom.getInstance("SHA1PRNG"); 
    sr2.setSeed(seed); 
    } catch (NoSuchAlgorithmException e) { 
    } 
    //return NONCE; 
    return null; 
} 

我宣佈開始時NONCE = generateNonce();。 但問題在於不是獲取隨機數值,而是在客戶端打印爲null。當我試圖在服務器端打印它時,它也顯示爲null

有人能告訴我在我的代碼中的錯誤,或幫助我更好或更合適的編碼,請。提前致謝。

Regards, Sebby。

+0

請刪除此問題中的間諜軟件鏈接。 – Roger

回答

6

您需要的return語句添加到您的值要返回,因爲現在你的代碼產生(或似乎產生)的亂數,但返回null因此字符串NONCE被賦予的價值null

您還應該刪除return null聲明。如果你把它留在最後返回聲明,您的代碼將生成一個有效的NONCE 將返回null

+0

非常感謝。它有幫助。 –

+0

沒問題,很高興我能幫上忙。祝你好運。 –

2

嗯,我會先解決你的代碼的格式,因爲它是很難讀的。

然後,我會刪除第二個SecureRandom實例。

然後我會在最後刪除return null;聲明。

然後我會重寫函數返回一個像這樣的隨機整數:

return sr.next(32); 

同時確保該函數聲明爲返回一個整數,而不是字符串。

相關問題