使用字符串生成 public 和私钥

Generate public and private key using a string

在 Java 中,我想根据我的应用程序中的字符串生成 public 和私钥。

我不是为了安全,我是为了 "Can I generate the same public and private key using this string"。

我该怎么做?

我在看这些方法:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);

但我想用我自己的字符串作为密钥对生成器的种子,理想情况下这些字符串会被这些算法散列。 KeyGen 只接受 SecureRandom 对象。每当我传递该字符串时,我都想要相同的结果密钥对。

尝试在初始化后添加以下行 random:

random.setSeed(myString.hasCode())

在一次程序执行期间,给定相同的字符串,您的字符串的哈希码值将始终相同,并且被认为不太可能找到具有相同哈希码的两个字符串。

如果你想生成一个散列,保证在程序的多次执行期间相同,或者如果你想确保找到两个生成相同散列的字符串确实不可行,请尝试使用类似于 MessageDigest 而不是 String.hashCode()。像这样:

MessageDigest md = MessageDigest.getInstance("SHA-256");
random.setSeed(md.digest(myString.getBytes())

此外,请注意,字符串每次都必须始终具有相同的字符编码,以便您生成相同的 MessageDigest 值和 public 以及私钥对。