php base64_decode与java base64解密结果不匹配问题
1.正常的字符串base64加密后,php和java都可以正常解析
例如:
原文:
java代码:
java代码结果:
php代码:
php代码结果:
解析过程就不再列举了,解析结果都是可以还原原字符串。
2.特殊字符串(非base64加密的字符串结果)进行base64 decode解析结果不同
场景:公司某个业务的手机号php系统加密算法传输(涉及到base64加密),对端java系统进行解密(涉及到base64解密)
加密流程暂不列举,直接列举base64解密结果
加密原文:
php代码:
php代码结果:
java代码:
java代码结果:
很明显,php解密的结果文本和字符串长度都与java不同
java解决问题:
1.查看解密后字节长度
java代码:
java代码结果:
结论:字节长度相符,所以最终得到的字符串,并不是通过new String()生成。
2.查看php解密后ASCII码与java字节码的对比
php代码:
php代码结果:
java代码:
java代码结果:
对比后发现:
java的负数字节码与php的字节码结果相差256
ok,修改java解密逻辑,新增256的计算
java代码:
java代码结果:
3.结论
1.非base64加密的标准数据,通过base64解码,php和java结果字符串不同
2.java获取base64解码的字节数组,长度与php解码长度一致,字节数字为正数,与php的ASCII码一致,负数的话,与php的ASCII码相差256;
3.也可以通过ISO_8859_1编码,获取到长度一致的字符串,遍历字符串每个char的int值,也是与php的ASCII码相同
4.不同的第三方jar解析base64,结果是一样的
5.长度和ASCII码都与php相同时,得到的字符串与php也不相同,暂时不知道什么原因
__EOF__

本文链接:https://www.cnblogs.com/forforever/p/15624480.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2020-11-30 cPanel 和 WHM 软件中存在双因素身份验证绕过漏洞