アリスが公開鍵と秘密鍵のペアを作成できるようにして、ボブが秘密のメッセージを送信できるようにしたいと考えています。しかし、アリスがどこからでもメッセージを確認できるようにしたいのですが、秘密鍵が入ったメモリースティックを持ち歩くのは面倒です。アリスが覚えているパスワードに基づいて公開鍵と秘密鍵のペアを作成する方法はありますか? このようにして、必要なときにいつでも簡単に秘密鍵 (および公開鍵) を生成できました。
この質問の短いバージョンは次のとおりです。 cryptico.jsに相当する Java はどこにありますか。
また、これはスタック オーバーフローに関する同じ質問ですが、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();