JavaScriptでの暗号化とJavaでの復号化を行うライブラリがあるかどうかを知りたいのですが。私はすでに多くのAPIを試しましたが、Javaで同じ値を取得していません。
公開鍵と秘密鍵の暗号化が必要なため、RSAを使用しようとしています。
使用したものは次のとおりです。
確認したことはほとんどありませんが、JavaScriptは文字列を小さなチャンクに分割してから暗号化し、JavaとJavaScriptで暗号文が異なります。文字列全体を使用するようにJavaScriptコードを編集しましたが、機能しませんでした。 。
また、HTMLページの文字セットをutf-8に設定しようとしましたが、機能しませんでした。 「K」のような単一の文字列を正しく暗号化および復号化することに成功したので、JavaScriptで文字列を小さなチャンクに分割して暗号化することに問題があると思います(チェックしたが、それを全体)。
私のJava実装は:
BigInteger d = new BigInteger("1f3fac65c4ae222e3a3074dd4c38fbb72c0705c4bbac0385b867c12c25a44e01", 16);
BigInteger e = new BigInteger("65537");
BigInteger N = new BigInteger("b42e91fbca364cf2a125aec67ffbdab624fd401100c40ea05189ba34d1028b0d", 16);
String messageToEncrypt = "kishor";
byte [] messageByte = messageToEncrypt.getBytes();
BigInteger message = new BigInteger(messageByte);
//Encrypting and Decrypting messages
//Encrypt a message using N and e:
BigInteger ciphertext = message.modPow(e, N);
//Decrypt the message using N and d:
BigInteger plaintext = ciphertext.modPow(d, N);
byte[] plainTextByte = plaintext.toByteArray();
String decryptMessage = new String(plainTextByte);
/*System.out.println("p : " + p);
System.out.println("q : " + q);*/
System.out.println("N : " + N.toString(16));
System.out.println("e : " + e.toString(16));
System.out.println("d : " + d.toString(16));
/*System.out.println("PhiN : " + PhiN);*/
System.out.println("ciphertext : " + ciphertext.toString(16));
System.out.println("decryptMessage : " + decryptMessage);
}
(Stack Overflow自体で)多くの質問を検索したので可能かどうかを教えてください。解決策は見つかりません。十分にテストされたビルド済みライブラリを探しています。
JavaScriptはブラウザーで実行されますか?その場合は、何も暗号化しないでください。
私の 詳細は他の回答 を参照してください。基本的に、JavaScriptで何かをしている場合、接続はa)すでに安全であるか、b)Webアプリ内で行うことでこれ以上安全ではなくなります。
ここではハッシュについて説明しますが、それは実際にはJavaScriptのany種類のプロシージャに適用されます。