2011-03-08 92 views
0

我搜索了整個不同的論壇,現在我終於把我的問題,因爲我找不到具體的答案。SecureRandom的一般聲明返回錯誤 - Java

我正在爲SunSPOT傳感器編寫安全協議作爲我的最後一年項目。

我希望生成一個128位的密鑰,通過我在網上的搜索,稍後可以進行哈希處理。我碰到生成隨機密鑰的最佳方法是SecureRandom。

我想實現的一般性發言,看看它是如何工作的,這樣我可以用它進一步按照我的要求

SecureRandom gen = SecureRandom.getInstance("SHA1WITHECDSA"); 
上述statment

我與「SHA1PRNG」,「MD5ECDSA」和「使用ECDSAWithSHA1Signature」 只要我完成聲明,並把它分號返回此錯誤類 com.sun.spot.security.implementation.SecureRandom

getInstance方法 不能應用於給定類型
需要:字節發現:java.lang.String中

我已分別添加了Jar文件到build.xml並進入build.properties;還將該算法導入到程序中。

感謝您閱讀

和任何幫助大大appriciated

三江源每一個誰曾試圖幫助。

哈希(Hasnain)

+0

請複製並粘貼整個堆棧跟蹤。 – 2011-03-09 00:23:36

+0

@GregS:我請你原諒,Stack Trace?你需要什麼幫助。 – Hash 2011-03-09 17:30:13

+0

堆棧跟蹤發生在運行時失敗。他的代碼甚至沒有編譯。 – Jorn 2011-03-09 22:58:42

回答

0

的聲音,我就好像你調用一個需要byte作爲參數的方法,但你提供一個String

+0

是的,這是錯誤...但是,雖然如果你「把SecureRandom gen = SecureRandom.getInstance(」SHA1PRNG「);這是一般的聲明它將返回相同的結果:( – Hash 2011-03-08 23:04:38

2

爲什麼不直接說「SecureRandom()」並讓系統選擇算法?這裏有一個明確的例子:

import java.security.SecureRandom; 

public class Rando { 
    public static void main(String[] args) { 
     System.out.println(new SecureRandom().nextFloat()); 
    } 

} 
+0

我很抱歉,我想我只是讚揚你的回覆對其發表評論 – Hash 2011-03-08 23:13:39

+0

一般定義返回錯誤,如「找不到符號 符號:方法SecureRandom()」 – Hash 2011-03-08 23:16:30

+0

我添加了一個具體的如何做到這一點的示例 – 2011-03-09 20:05:16

1

你使用的是正確的類嗎?你應該使用java.security.SecureRandom。另外,SHA1WITHECDSAMD5ECDSAECDSAWithSHA1Signature與SecureRandom實例無關。

+0

@ Greg S:感謝您的回覆我正在爲SunSPOT傳感器(sunspotworld.com)編寫代碼,並且基於Squawk的設備的Secure Random類的位置是「com.sun.spot.security.implementation.SecureRandom」。請引導我一個不同的建議。謝謝 – Hash 2011-03-09 17:02:12

+0

啊,對不起,我不太熟悉太陽斑。我進入sunspotworld.com網站,看看這些API,沒有發現任何類型的SecureRandom類。你能提供一個鏈接到該類的javadocs嗎? – 2011-03-10 00:28:43

+0

感謝Greg S爲顯示intrest ....「http://www.sunspotworld.com/docs/Red/hostjavadoc/com/sun/squawk/security/signing/package-summary.html」也演示代碼被附上「http://www.4shared.com/dir/tJvfDOwg/Code.html」檢查第53行getinstance算法;進一步附加Jar文件,以便您可以驗證我可以使用SecureRandom – Hash 2011-03-10 03:29:51

0

錯誤是指類com.sun.spot.security.implementation.SecureRandom。你大概應該使用java.security.SecureRandom(這個類有getInstance方法需要一個字符串)。

您可能有不正確的導入語句。太陽黑子java應用程序的安全隨機要求

+0

@ Dan Dyer:感謝您的迴應我正在編寫代碼SunSpot傳感器(http://www.sunspotworld。 com /)和基於squawk的設備的Secure Random類的位置是正確的,正如我所提到的。請轉介我一個不同的建議。謝謝 – Hash 2011-03-09 17:00:25

+0

@Hash Sunspot SecureRandom類與java.security.SecureRandom不一樣(我沒有意識到這不包含在Sunspot API中)。它在不同的包中不是同一個類,它是具有相同名稱的不同類。你不能調用'getInstance(String)',因爲它沒有這個方法。你正在複製的示例代碼可能期望'java.security.SecureRandom'。太陽黑子類有一個方法'getInstance(byte)',你應該研究一下。 – 2011-03-09 19:44:55

+0

感謝Greg S展示intrest ....「http://www.sunspotworld.com/docs/Red/hostjavadoc/com/sun/squawk/security/signing/package-summary.html」也附上Demo代碼「http://www.4shared.com/dir/tJvfDOwg/Code.html」檢查第53行getinstance算法;進一步附加Jar文件,以便您可以驗證我可以使用SecureRandom – Hash 2011-03-10 03:30:22

0

實例是遵循

SecureRandom的根;代碼: gen = SecureRandom.getInstance(SecureRandom.ALG_SECURE_RANDOM);

我想感謝所有努力解決這個錯誤的人。

再次感謝。