我想允许 Alice 创建一个公钥/私钥对,以便 Bob 可以发送她的机密消息。但是,我希望 Alice 能够从任何地方查看她的消息,而她不得不随身携带一个包含她的私钥的记忆棒会很痛苦。Alice 有没有办法根据她记得的密码创建公钥/私钥对?通过这种方式,她可以随时简单地生成私钥(和公钥)。
这个问题的简短版本是:我在哪里可以找到cryptico.js的 Java 等价物。
此外,这是关于 Stack Overflow的相同问题,但适用于 javascript。
编辑:这是我第一次尝试解决方案:
SecureRandom saltRand = new SecureRandom(new byte[] { 1, 2, 3, 4 });
byte[] salt = new byte[16];
saltRand.nextBytes(salt);
int keyLength = 3248;
SecretKeyFactory factory = SecretKeyFactory
.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 8192, keyLength);
SecretKey key = factory.generateSecret(spec);
SecureRandom keyGenRand = SecureRandom.getInstance("SHA1PRNG");
keyGenRand.setSeed(key.getEncoded());
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
gen.initialize(keyLength, keyGenRand);
java.security.KeyPair p = gen.generateKeyPair();