base64 decode/encode inconsistency
我试图对第三方项目使用的base64编码应用程序进行反向工程,因此我可以创建一个自定义UI。 我的方法在一个示例中取得了成功,但在其他示例中似乎并没有达到目标(一些字符不太正确)。
1 | AQAAAAAAGQBec2lwOigwMjAxMjM0NTZbMC05XSspQC4qFwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQAA |
^^数据库中的实际base64编码
1 | AQAAAAAAEABec2lwOigwMjAxMjM0NTZbMC05XSspQC4qEwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQoA |
^^与PHP方法匹配的最佳尝试
由于控制字符,我实现了一些json 编码,以便更轻松地识别用于变量的字符串。 字符串与该示例匹配,但是base64编码结果与预期的结果不同。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $actualfour = 'AQAAAAAAGQBec2lwOigwMjAxMjM0NTZbMC05XSspQC4qFwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQAA'; echo"".$actualfour; echo"<br />"; $four = chr(01); $four .= chr(00); $four .= chr(00); $four .= chr(00); $four .= chr(00); $four .= chr(00); $four .= chr(16); $four .= chr(00); $four .= '^sip:(020123456[0-9]+)@.*'; $four .= chr(19); $four .= chr(00); $four .= 'sip:[email protected] '.chr(00); $jsonfour = json_encode($four); echo"unencoded:".$jsonfour; echo"<br />"; $encodefour = base64_encode($four); echo"".$encodefour; echo"<br />"; $jsonencodefour = json_encode(base64_decode($encodefour)); echo"encoded:".$jsonencodefour; echo"<br />"; if ($encodefour != $actualfour) { echo"FAIL"; } else { echo"PASS"; } |
^^代码方法
1 2 3 4 5 6 7 | AQAAAAAAGQBec2lwOigwMjAxMjM0NTZbMC05XSspQC4qFwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQAA unencoded:"\u0001\u0000\u0000\u0000\u0000\u0000\u0010\u0000^sip:(020123456[0-9]+)@.*\u0013\u0000sip:[email protected] \u0000" AQAAAAAAEABec2lwOigwMjAxMjM0NTZbMC05XSspQC4qEwBzaXA6MDIwMTIyMTEzQDEyNy4wLjAuMQoA encoded: "\u0001\u0000\u0000\u0000\u0000\u0000\u0010\u0000^sip:(020123456[0-9]+)@.*\u0013\u0000sip:[email protected] \u0000" FAIL |
^^输出
-
chr(16) 应该是chr(0x19) 或chr(25) -
chr(13) 应该是chr(0x17) 或chr(23) -
127.0.0.1 之后的换行符应为chr(00)
这是正确的
1 2 3 4 5 6 7 8 9 10 11 12 |
通过将