将字符串转换为字节数组

时间:2012-05-03 12:42:23

标签: java bytearray rsa

我正在使用 RSA 加密将simpletext转换为加密形式。

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:数据必须从零开始

需要帮助!!

3 个答案:

答案 0 :(得分:2)

我只是看了屏幕右侧的“相关”部分并且...... Convert Java string to byte array

答案 1 :(得分:2)

问题是[B@d7eed7不是加密文本。它只显示字节数组的类型和地址,而不是其内容。

有关详细信息,请参阅https://stackoverflow.com/a/5500020/367273

答案 2 :(得分:1)

要将字符串转换为字节数组,您可以使用以下命令:

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

有关详情,请查看hereherehere

祝你好运!