php base64_decode与java base64解密结果不匹配问题

本文探讨了在PHP和Java中使用base64解密时遇到的问题,当解密非标准base64字符串时,两者结果不一致。通过分析解密后的字节长度和ASCII码,发现Java的负字节码与PHP相差256。通过调整Java解密逻辑,可以解决字节码差异,但即使长度和ASCII码一致,解密得到的字符串仍然不相同,原因尚不明朗。
摘要由CSDN通过智能技术生成

1.正常的字符串base64加密后,php和java都可以正常解析

例如:

原文:

this is a test

java代码:

String test = "this is a test";
System.out.println(new String(java.util.Base64.getEncoder().encode(test.getBytes())));
System.out.println(org.apache.commons.codec.binary.Base64.encodeBase64String(test.getBytes()));

java代码结果:

dGhpcyBpcyBhIHRlc3Q=
dGhpcyBpcyBhIHRlc3Q=

php代码:

<?php
        echo base64_encode('this is a test')."\n";
?>

php代码结果:

dGhpcyBpcyBhIHRlc3Q=

解析过程就不再列举了,解析结果都是可以还原原字符串。

 

2.特殊字符串(非base64加密的字符串结果)进行base64 decode解析结果不同

场景:公司某个业务的手机号php系统加密算法传输(涉及到base64加密),对端java系统进行解密(涉及到base64解密)


加密流程暂不列举,直接列举base64解密结果


加密原文:

MzMdWpavMBd+FBUoJWmdQeaqV5J1z57zXLKAn6NWtGhL1ygVtA
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值