2

シンプルテキストを暗号化された形式に変換するためにRSA暗号化を使用しています。

my plain text is : hello

encrypted text : [B@d7eed7

さて、暗号化されたテキストを単純なプレーンテキストに変換する方法私は次のコードを使用しています

KeyPairGenerator keygenerator = KeyPairGenerator.getInstance("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keygenerator.initialize(1024, random);

KeyPair keypair = keygenerator.generateKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
Cipher cipher = Cipher.getInstance("RSA");

String arrayStr = "[b@d7eed7";
byte ciphertext = arrayStr.getBytes();
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] cleartext1 = cipher.doFinal(ciphertext);
System.out.println("the decrypted cleartext is: " + new String(cleartext1));

javax.crypto.BadPaddingExceptionが発生します:データはゼロで始まる必要があります

助けが必要 !!

4

3 に答える 3

2

画面の右側にある「関連」の部分を見て、Java文字列をバイト配列に変換します

于 2012-05-03T12:48:59.123 に答える
2

問題は[B@d7eed7、暗号化されたテキストではないということです。内容ではなく、バイト配列のタイプとアドレスを表示するだけです。

詳細については、https://stackoverflow.com/a/5500020/367273を参照してください

于 2012-05-03T12:50:10.693 に答える
1

文字列をバイト配列に変換するには、次を使用できます。

String source = "0123456789";
byte[] byteArray = source.getBytes("specify encoding alongside endianess");// e.g "UTF-16LE", "UTF-16"..

詳細については、ここ、ここここを確認してください

幸運を!

于 2012-05-03T12:54:20.867 に答える