字节 - 2然后下一次+2不起作用......为什么?

时间:2012-11-14 16:15:42

标签: java encryption byte

我有一个文件的字节数组字符串,并且希望每个字节减去2或类似的东西,然后再加上2.我想这样做:

byte buffer[] = new byte[(int) file.length()];
try {
    in = new FileInputStream(file);
    in.read(buffer);

    for(int i = 0; i < buffer.length; i++){
        buffer[i] = (byte) (buffer[i]-2); // and then later +2
    }
}

但它不起作用。首先它像我想要的那样改变文件,但后来当我把整个事情+2时,它给了我一些奇怪的东西。

所以我想要这一切:

  1. 获取名为buffer
  2. 的字节数组
  3. 然后更改一些值
  4. 更改这些值
  5. 获取与之前相同的文件

2 个答案:

答案 0 :(得分:2)

您的代码中存在一些错误:

  1. new byte[(int) file.length()];这将导致OutOfMemoryError或文件的损坏读取
  2. in.read(buffer);这只会读取文件的部分字节。
  3. 您使用“加密”标记了此问题。这根本不加密。 “解密”内容真的很容易。
  4. 你的档案长度是否相同?

答案 1 :(得分:1)

您需要使用in.read()调用的返回值来确切地知道实际读入缓冲区的字节数,以及写入输出的字节数。