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 回答