这个问题不是加密和解密的事件,而是没能正确地使用相同的字符集编码。
加密之前就应该约定双方使用同一个字符集编码来做编解码,比如用 UTF8,我们在用一个 byte[] 创建一个 String 时应该明确地指定字符集编码而不能使用默认值,因此默认值是跟操作系统或程序启动时的命令行有依赖关系的,这很难预料谁会使用你的程序,又会如何使用你的程序,我们明确地指定字符集就不会受此影响。
String a = "汉字“
byte[] bytes = a.getBytes("UTF8");
byte[] encoded = encode(bytes);
byte[] decoded = decode(encoded);
String received = new String(decoded, "UTF8");
2019-07-17 22:56:19