XOR Crypt with Linux& Windows不同

时间:2013-06-11 18:32:34

标签: java linux windows encryption

目前我正在使用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进行测试。

现在如何修复它(此时我为加密设置了旁路,但这不是我的目标,我想要对两个系统进行加密)?我的来源不对吗?

1 个答案:

答案 0 :(得分:2)

我猜这是一个编码问题:charset在windows和linux上可能有所不同。我建议

byte[] bytes = s.getBytes(charset);
...
return new String(bytes, charset)

,其中charset是一些明确的字符集。