4

javascript で暗号化を行い、java で復号化を行うためのライブラリを誰かが知っているかどうかを知りたいです。私はすでに多くの API を試しましたが、Java で同じ値を取得できません。
公開鍵と秘密鍵の暗号化が必要なため、RSA を使用しようとしています。私が使用したものはほとんどありません:

  1. http://www-cs-students.stanford.edu/~tjw/jsbn/
  2. http://ats.oka.nu/titaniumcore/js/crypto/readme.txt
  3. http://www.ohdave.com/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);
}

(stackoverflow自体で)多くの質問を検索しましたが、解決策が見つからないため、可能な場合はお知らせください。

4

3 に答える 3

1

RSA はキー転送メカニズムです。これを使用して、対称アルゴリズムのキーを暗号化します。私が見た限りでは、それを他の目的で使用している人は、自分が何をしているのかわからず、そのままにしておくと、価値のない暗号システムを構築することになります。

Java とStanford Javascript Crypto Library の間で相互運用に成功しました。対称暗号化アルゴリズム用の優れた JavaScript ライブラリは他にも多数あります。

于 2012-08-15T03:33:53.907 に答える
1

Gibberish AES (JS Lib) を試す https://github.com/mdp/gibberish-aes/

于 2012-08-15T03:19:18.990 に答える
0

皆さん、私は解決策を見つけました。JavaScript では、最初の文字が暗号化されずにスキップされ、問題が発生していました。ループを修正しました。返信ありがとうございます。

于 2012-08-16T04:06:03.847 に答える