java使用字符串生成公钥和私钥
在Java中,我希望根据我的应用程序中的字符串生成公钥和私钥
我不是说安全性,我是说“我能用这个字符串生成相同的公钥和私钥吗?”
我该怎么做
我在研究这些方法:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
但是我想用我自己的字符串为密钥对生成器种子,理想情况下,这些字符串将通过这些算法进行散列。KeyGen只接受SecureRandom
对象。只要我传递那个字符串,我就想要相同的结果密钥对
# 1 楼答案
尝试在初始化
random
后添加以下行:random.setSeed(myString.hasCode())
在程序的一次执行过程中,给定相同的字符串,字符串的哈希代码值将始终相同,并且不太可能找到具有相同哈希代码的两个字符串
如果您想生成一个在程序多次执行期间保证相同的散列,或者如果您想确保查找两个生成相同散列的字符串确实不可行,请尝试使用类似MessageDigest的内容,而不是
String.hashCode()
。像这样:另外,请注意,字符串每次必须始终具有相同的字符编码,以便生成相同的
MessageDigest
值以及公钥和私钥对