对于一个byte数组进行加密,对每个byte值加一的做法是可以的。但是需要注意的是,如果某个byte值加一后超出了byte类型的取值范围(-128到127),就会发生溢出,导致解密时无法得到原来的值。

如果你改用偏移量来进行加密,可以避免这个问题。具体做法是,定义一个偏移量(比如n),然后对每个byte值加上这个偏移量,如果加上偏移量后超出了byte类型的取值范围,可以通过取模操作将其调整到合法的范围内。

示例代码如下:

public byte[] encrypt(byte[] data, int offset) {
    byte[] encryptedData = new byte[data.length];
    for (int i = 0; i < data.length; i++) {
        encryptedData[i] = (byte) ((data[i] + offset) % 256);
    }
    return encryptedData;
}

public byte[] decrypt(byte[] encryptedData, int offset) {
    byte[] decryptedData = new byte[encryptedData.length];
    for (int i = 0; i < encryptedData.length; i++) {
        decryptedData[i] = (byte) ((encryptedData[i] - offset + 256) % 256);
    }
    return decryptedData;
}

在上述代码中,加密时对每个byte值加上偏移量offset,并通过取模操作确保结果在byte类型取值范围内。解密时,将加密后的byte值减去偏移量offset,并通过取模操作还原到原来的值。

这样做可以确保加密和解密过程中不会发生溢出,保证能够得到正确的结果

Android开发: 相对一个byte数组做加密对每个byte值加一这样做可以吗?万一加了后某个byte超出取值范围那我解密时是不是得不到原来的了。要是我改用偏移量是不是不会超出取值范围?

原文地址: https://www.cveoy.top/t/topic/irVt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录