【发布时间】:2020-11-19 18:40:28
【问题描述】:
我想让 Alice 创建一个公钥/私钥对,以便 Bob 可以发送她的机密消息。但是,我希望 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();
【问题讨论】:
标签: java encryption