You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现的Blowfish加密转Python后加密结果不一致问题求助

问题原因说明

你两段代码的加密结果实际完全一致,差异来自Java和Python的字节打印规则不同:

  • Java的byte类型是8位有符号整数,取值范围是-128~127,超过127的字节会被表示为负数
  • Python的bytes类型打印的是无符号整数,取值范围是0~255

你可以手动换算验证:

Java输出有符号字节换算为无符号字节对应Python输出值
-19256 - 19 = 237237
-42256 - 42 = 214214
-105256 - 105 = 151151
-126256 - 126 = 130130
-44256 - 44 = 212212

其余正数的数值完全匹配,你的加密逻辑没有问题,只是输出展示的格式不同而已。

如果需要Java输出和Python一致的无符号数值,可以用byte & 0xFF做转换;如果需要Python输出和Java一致的有符号数值,可以用byte - 256 if byte > 127 else byte做转换。

内容的提问来源于stack exchange,提问作者Callum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:02