在Java中,字节数组可以存放负值,这是因为Java的byte类型的取值范围为-128到127之间,而在Python3中,bytes的取值范围为0到256。
Java: -127~128
Python:0~256
在某些场景下,比如AES加密时,会用到Key、IV(偏移量)等参数值的定义,在Java中有可能是如下的:
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中可用如下方法进行转换:
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算法函数当中,相应的加密结果便一致了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有