【发布时间】:2012-07-01 14:55:40
【问题描述】:
我有一个关于加密和解密字符串的问题
我必须通过网络发送一个加密字符串。(一个 android 应用程序是客户端)这是我到目前为止所做的
byte[] input = getByteArray(filePath);//get the message stored in a file as a byte array
通过阅读一些教程,我设法将字符串消息发送到字节数组和 使用 javax.crypto 对其进行加密
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
加密的 msg 被检索为字节数组
byte[] encrypted
我什至设法使用反向方法解密并再次获取消息
但是当我尝试将此加密的字节数组转换为字符串(通过网络传递它)时,我的问题就出现了 然后将其重新转换为字节数组
我试过了
String encryptedStrn = new String(encrypted); // convert to string
当我将它转换为字节数组时 byte[] enc = encryptedStrn.getBytes();
并使用此 enc 数组解密,但输出不正确。
我是否错过了一些关于转换的基本内容。请帮我。 提前致谢
【问题讨论】:
-
不要使用
encryptedStrn.getBytes()。使用 Base64 编码。 -
DES 也很弱。请改用 AES。
-
@CodeInChaos 我在将字节转换为字符串时遇到问题。
-
如果你按照@CodeInChaos 的建议去做,你就不会。
-
@CodeInChaos 感谢您的建议
标签: java android encryption