Java-创建Vernam密码

时间:2016-09-07 12:49:41

标签: java byte

所以,我正在创建一个LorenzSZ40模拟器。而且我还处于创建它的早期阶段。事实是我使用byte[]数组来存储纯文本和关键数据。

例如我有这个

byte[] plainText = {1, 0, 1, 0, 0};byte[] key = {1, 1, 1, 0, 1}; 当XOR的时候,结果应该是0, 1, 0, 0, 1 但问题是我无法在^上使用byte[]运算符。

    public static byte[] xor(byte[] plainText, byte[] key) {
    byte[] result = new byte[Math.min(plainText.length, key.length)];

    for (int i = 0 ; i < result.length ; i++) {
        result[i] = (byte) (((int) plainText[i]) ^ ((int) key[i]));
    }

    return result;
}

public static void main(String[] args) {

    String pt = "10100";
    String key = "11011";
    byte[] som = pt.getBytes();
    byte[] k = key.getBytes();
    //0, 1, 1, 1, 1

    String nm = new String(xor(som, k));
    System.out.println(xor(som, k));
} 

这是我尝试过的代码。当我运行它时我只得到[B@3d494fbf 如果我要使用

String nm = new String(xor(pci, key));
    System.out.println(new String(nm));

而不是

String nm = new String(xor(som, k));
    System.out.println(xor(som, k));

我根本不会得到任何东西。

我的问题是,我该如何做对?

0 个答案:

没有答案