php对字节base64编码,Base64编码包含空字节的输入

基于PHP的网站返回base64编码的字符串,它是序列化数据的base64编码。当我手动对解码的字符串进行base64编码时,得到的结果不同。

所以,我进一步研究它,发现序列化的数据包含空字节。

Base64编码字符串:

Tzoxmdoirxhwcmvzc2lvbii6mzp7czoxndoiaev4cjlc3npb24ab3io3m6mzoizgl2ijtzoje4oiiarxhwcmvzc2lvgbwyxjhbxmio2e6mjp7atowo2q6odtpoje7zdoyo31zojk6inn0cmluz2lmesi7czoiii4ic8gmi7fq==

$ echo "TzoxMDoiRXhwcmVzc2lvbiI6Mzp7czoxNDoiAEV4cHJlc3Npb24Ab3AiO3M6MzoiZGl2IjtzOjE4OiIARXhwcmVzc2lvbgBwYXJhbXMiO2E6Mjp7aTowO2Q6ODtpOjE7ZDoyO31zOjk6InN0cmluZ2lmeSI7czo1OiI4IC8gMiI7fQ==" | base64 -D | hexdump -C

00000000 4f 3a 31 30 3a 22 45 78 70 72 65 73 73 69 6f 6e |O:10:"Expression|

00000010 22 3a 33 3a 7b 73 3a 31 34 3a 22 00 45 78 70 72 |":3:{s:14:".Expr|

00000020 65 73 73 69 6f 6e 00 6f 70 22 3b 73 3a 33 3a 22 |ession.op";s:3:"|

00000030 64 69 76 22 3b 73 3a 31 38 3a 22 00 45 78 70 72 |div";s:18:".Expr|

00000040 65 73 73 69 6f 6e 00 70 61 72 61 6d 73 22 3b 61 |ession.params";a|

00000050 3a 32 3a 7b 69 3a 30 3b 64 3a 38 3b 69 3a 31 3b |:2:{i:0;d:8;i:1;|

00000060 64 3a 32 3b 7d 73 3a 39 3a 22 73 74 72 69 6e 67 |d:2;}s:9:"string|

00000070 69 66 79 22 3b 73 3a 35 3a 22 38 20 2f 20 32 22 |ify";s:5:"8 / 2"|

00000080 3b 7d |;}|

如您所见,它包含空字节。

那么,如果base64包含空字节,我如何对这样的字符串进行编码?

在对字符串进行编码之前,如何在字符串中包含空字节?

因为根据我的理解,字符串在PHP和Python中以空字节结尾。

如果我在PHP中表示如下所示的字符串并对其进行base64编码,就会得到不正确的结果。

$t=“O:10:”表达式”:3:{s:14:“\0Expression\0op”;s:3:“div”;s:18:“\0Expression\0params”;a:2:{i:0;d:8;i:1;d:2;}s:9:“stringify”;s:5:“8/2”;}

用PHP或Python解决方案会很好。

谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值