我想允许Alice创建公钥/私钥对,以便Bob可以发送她的机密消息.但是,我希望Alice能够从任何地方检查她的消息,并且她必须携带包含她的私钥的记忆棒是一件痛苦的事. Alice是否有某种方法可以根据她记得的密码创建公钥/私钥对?通过这种方式,她可以随时生成私钥(和公钥).
这个问题的简短版本是:我在哪里可以找到相当于cryptico.js的Java.
另外,here’s the same question在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();