目前我正在使用XOR-Encryption编程聊天。但今天我遇到了一个问题。 Windows下的加密与Linux不同。在Linux下,聊天运行正常,但在Windows下没有。
这里的课程:
class XOR_c {
private boolean active = true;
private int key;
// Constructor
public XOR_c(int k){
if (System.getProperty("os.name").contains("Windows")) {
JOptionPane.showMessageDialog(null,"No encryption!","Client", JOptionPane.CANCEL_OPTION);
this.active = false;
}
key = k;
}
public String encode(String s) {
if (active == false) return s;
char[] c = s.toCharArray();
for (int i=0; i<c.length; i++)
c[i] = (char)(c[i]^key);
return new String(c);
}
public String decode(String s){
return encode(s);
}
}
使用openSuse,Debian和Windows 7进行测试。
现在如何修复它(此时我为加密设置了旁路,但这不是我的目标,我想要对两个系统进行加密)?我的来源不对吗?
答案 0 :(得分:2)
我猜这是一个编码问题:charset在windows和linux上可能有所不同。我建议
byte[] bytes = s.getBytes(charset);
...
return new String(bytes, charset)
,其中charset
是一些明确的字符集。