java - byte - 2 然后下次 +2 不起作用...为什么?

标签 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. 获取与之前相同的文件

最佳答案

您的代码中有一些错误:

  1. new byte[(int) file.length()]; 这将最终导致 OutOfMemoryError 或文件读取损坏
  2. in.read(buffer); 这只会读取文件的一些字节。
  3. 您将此问题标记为“加密”。这根本不是加密。 “解密”内容非常容易。

你的文件长度还是一样吗?

关于java - byte - 2 然后下次 +2 不起作用...为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382674/

相关文章:

java - 使用 Android 语音识别无法收到超过 5 个结果

C++使用转置密码加密/解密

android - 使用 KeyStore 进行 RSA 解密时出现间歇性 IllegalBlockSizeException

java - 将 PCM 字节数组转换为环绕声道

java - 如何隐藏特定 fragment 的 View

java - 为什么我无法将 getActionCommand() 与匹配的字符串值进行比较?

java - 具有最小绝对差的整数可以有一对或多个这样的对

mysql - 加密 mysql 数据库,因此系统管理员也无法访问数据

戈朗 : How to printf % x for bytes in a struct?

c# - 如何将 Bitmap 转换为 byte[]?