0

現在、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 でテストされています。

それを修正する方法 (現時点では暗号化のバイパスを作成しましたが、これは私のターゲットではありません。両方のシステムで暗号化が必要です)? 私の情報源は間違っていますか?

4

1 に答える 1

2

これはエンコーディングの問題だと思います.WindowsとLinuxでは文字セットが異なる場合があります. 私は提案します

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

charset明示的な文字セットです。

于 2013-06-11T20:00:39.273 に答える