我正在尝试实现一个变异加密算法(理论上由我开发),作为要求的一部分,我需要生成一个 RSA 密钥对并将其存储在数据库中,以便以后可以在加密过程中检索它(仅用于加密会话密钥,以便它可以与加密消息一起安全发送)。
我尝试生成 RSA 密钥对似乎可行,但是它会一遍又一遍地生成相同的值,而不是每次运行代码时都提供新的密钥对。我做错什么了?此外,如果这些值取决于机器本身(因此显示相同的值),是否有办法将密钥对生成链接到提供的电子邮件地址,以便每次输入新的电子邮件地址时都会输出不同的 RSA 密钥对?
以下代码是我尝试生成密钥对:
import java.security.*;
import java.security.*;
/**
* @author Speedy gonzales
*/
public class test {
public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded();
StringBuffer retString1 = new StringBuffer();
retString1.append("[");
for (int puk = 0; puk < publicKey.length; ++puk) {
retString1.append(publicKey[puk]);
// retString1.append(", ");
}
retString1 = retString1.delete(retString1.length()-2,retString1.length());
retString1.append("]");
System.out.println(retString1);
byte[] privateKey = keyGen.genKeyPair().getPrivate().getEncoded();
StringBuffer retString2 = new StringBuffer();
retString2.append("[");
for (int pri = 0; pri < privateKey.length; ++pri) {
retString2.append(privateKey[pri]);
// retString2.append(", ");
}
retString2 = retString2.delete(retString2.length()-2,retString2.length());
retString2.append("]");
System.out.println(retString2);
}
}
谢谢