字节数组转换为字符串以及重新转换的困难
问题:
为什么字节数组转回字符串后得到的字节数组与原始字节数组不同,导致解密错误?
解决方案:
将加密数据编码为字符串即可由于字符串编码的性质而存在问题。对于二进制数据,建议使用字节数组。但是,如果需要字符串存储,则必须选择字节和字符之间一对一映射的编码,例如 ISO-8859-1。使用 UTF-16 等编码可能会由于添加字节顺序标记以及可能出现不明确的字符映射而导致数据丢失。
请考虑以下示例:
String decoded = new String(encryptedByteArray, "ISO-8859-1"); byte[] encoded = decoded.getBytes("ISO-8859-1");
使用 ISO-8859 -1 保留原始字节数组,确保正确解密。
UTF-16 失败的原因是:
以上是为什么将字节数组转换为字符串并返回会导致解密期间数据丢失?的详细内容。更多信息请关注PHP中文网其他相关文章!