有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用字符串生成公钥和私钥

在Java中,我希望根据我的应用程序中的字符串生成公钥和私钥

我不是说安全性,我是说“我能用这个字符串生成相同的公钥和私钥吗?”

我该怎么做

我在研究这些方法:

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

但是我想用我自己的字符串为密钥对生成器种子,理想情况下,这些字符串将通过这些算法进行散列。KeyGen只接受SecureRandom对象。只要我传递那个字符串,我就想要相同的结果密钥对


共 (1) 个答案

  1. # 1 楼答案

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

    random.setSeed(myString.hasCode())

    在程序的一次执行过程中,给定相同的字符串,字符串的哈希代码值将始终相同,并且不太可能找到具有相同哈希代码的两个字符串

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

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

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