在Java中,字节数组可以存放负值,这是因为Java的byte类型的取值范围为-128到127之间,而在Python3中,bytes的取值范围为0到256。
代码语言:javascript复制Java: -127~128
Python:0~256
在某些场景下,比如AES加密时,会用到Key、IV(偏移量)等参数值的定义,在Java中有可能是如下的:
代码语言:javascript复制public static byte[] iv = new byte[] { 1, 3, 8, 22, -13, 125, -40, -124, -27, -10, 57, 13, 46, 22, -3, 5 };
此时如果需要通过Python3来实现同样的加密算法则会出现一个问题,就是上面Java代码中的负值无法在Python3中直接表示。
面对这种情况,在Python3中可用如下方法进行转换:
代码语言:javascript复制iv = [1, 3, 8, 22, -13, 125, -40, -124, -27, -10, 57, 13, 46, 22, -3, 5]
iv_byte = bytes(i % 256 for i in iv)
之后在传入Python中对应的AES算法函数当中,相应的加密结果便一致了。