[英]Generate public and private key using a string
在Java中,我想基於我的應用程序中的字符串生成公鑰和私鑰。
我不是為了安全,我要去“我可以使用這個字符串生成相同的公鑰和私鑰”。
我該怎么辦?
我在看這些方法:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
但我想用自己的字符串為密鑰對生成器播種,理想情況下,這些算法會對其進行哈希處理。 KeyGen只接受SecureRandom
對象。 無論何時我傳遞該字符串,我都想要相同的結果密鑰對。
初始化random
后嘗試添加以下行:
random.setSeed(myString.hasCode())
在一次執行程序期間,給定相同的字符串,字符串的哈希碼值將始終相同,並且認為不太可能找到具有相同哈希碼的兩個字符串。
如果你想要生成一個在程序的多次執行期間保證相同的哈希,或者如果你想確定找到兩個生成相同哈希的String是不可行的,那么嘗試使用MessageDigest而不是String.hashCode()
。 像這樣:
MessageDigest md = MessageDigest.getInstance("SHA-256");
random.setSeed(md.digest(myString.getBytes())
另請注意,每次String必須始終具有相同的字符編碼,以便生成相同的MessageDigest
值以及公鑰和私鑰對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.