このコードを使用して文字列を2回暗号化しようとしているこの問題があります:
KeySpec keySpec = new X509EncodedKeySpec(new BigInteger(publicKey, 36).toByteArray());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key decodedPublicKey = keyFactory.generatePublic(keySpec);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, decodedPublicKey);
byte a1[] = cipher.doFinal(z.getBytes());
KeySpec keySpec2 = new X509EncodedKeySpec(new BigInteger(publicKey, 36).toByteArray());
KeyFactory keyFactory2 = KeyFactory.getInstance("RSA");
Key decodedPublicKey2 = keyFactory2.generatePublic(keySpec2);
Cipher cipher2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher2.init(Cipher.ENCRYPT_MODE, decodedPublicKey2);
byte a2[] = cipher.doFinal(z.getBytes());
どちらも同じpublicKey
と同じ入力を使用しますz
が、2 つのコード ブロックのそれぞれが異なるバイト配列を作成します ( a1!=a2
) 等しくしたいのですが、その方法がわかりません (調べようとしましたが、答えはまだです)。
誰かが私を助けてくれれば本当に感謝しています。
ありがとう
編集 :
暗号化するデータは非常に小さいため (単なるパスワード)、AES 暗号化は使用しませんでした。
クライアントとサーバーがあり、誰かがクライアントに接続したときに、彼のパスワードを確認したい (彼の暗号化されたパスワードは Android SD カードのファイルにある) ので、実際のパスワードとユーザーが入力したパスワードを比較したいログインページ
クライアントに秘密鍵がないため、既にデバイス上にある暗号化されたパスを復号化できません。そのため、暗号化されたパスワードを比較しようとしました (これは、同じではないことがわかっているものと同じだと思いました) )
多分あなたは私が何ができるか考えていますか?公開鍵しか持っていないパスワードと暗号化されたパスワードを比較する方法
ありがとう