Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php base64编码数据与“混合”;“随机”;十六进制_Php_Base64_Hex - Fatal编程技术网

Php base64编码数据与“混合”;“随机”;十六进制

Php base64编码数据与“混合”;“随机”;十六进制,php,base64,hex,Php,Base64,Hex,我得到一个带有base64编码数据的输入字符串。不幸的是,它将随机的十六进制数据(全部小写)混合在一起。手工排序非常简单,因为十六进制数据似乎都是32字节的段。例如,我可以将示例字符串格式化如下: 6dd11d15c419ac219901f14bdd999f38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 233

我得到一个带有base64编码数据的输入字符串。不幸的是,它将随机的十六进制数据(全部小写)混合在一起。手工排序非常简单,因为十六进制数据似乎都是32字节的段。例如,我可以将示例字符串格式化如下:

6dd11d15c419ac219901f14bdd999f38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 VGhpcyBpcyBzb 6dd11d15c419ac219901f14bdd999f38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 6dd11d15c419ac219901f14bdd999f38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 21lIGJhc2UtNjQ bb4af7e61760735ba17c29e8f542a668 75da91e90863f1ddb7e149297fc59afc f5de951fb65d06d2927aab7b9b54830e 2d935616a54c381c2f38db3731d5a378 gZW5jb2RlZCB 6dd11d15c419ac219901f14bdd999f38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 kYXRhIGhvb3JheSE= 6DD11D15C419AC219001F14BDD999F38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 vGHPcYBzB 6DD11D15C419AC219001F14BDD999F38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 6DD11D15C419AC219001F14BDD999F38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 21LIGHJHC2UTNJQ bb4af7e61760735ba17c29e8f542a668 75da91e90863f1ddb7e149297fc59afc f5de951fb65d06d2927aab7b9b54830e 2d935616a54c381c2f38db3731d5a378 gZW5jb2RlZCB 6DD11D15C419AC219001F14BDD999F38 0ad94e978ad624d15189f5230e5435a9 2dc19fe95e583e7d593dd52ae7e68a6e 465ffa6074a371a8958dad3ad271181a 23310939b981b4e56f2ecee26f82ec60 fe04bef49be47603d1278cc80673b226 kYXRhIGhvb3JheSE= 基本上,我需要取出base64内容并对其进行解码(在PHP中)。问题是,我把所有这些都当作一根长绳子,而且并不总是很明显在哪里放置换行符。例如,base64内容的第一位以“b”结尾,很容易被误认为是某些十六进制数据。我不知该怎么做。。。有什么想法吗

谢谢

-mala

我认为这是一个无法解决的问题——完全可能有32字节的base64编码数据无法与32字节的随机十六进制数据区分开来。如果没有关于数据流的更多信息,就不可能决定这些数据可能流向哪个存储桶。

在每个决策点(接下来的32字节base64或十六进制)进行base64解码可能会携带线索

还有一种最微小的可能性是,将这些十六进制字符串中的一个解释为base64总是会对正在解码的任何东西产生容易检测到的垃圾

否则你就倒霉了。

你可以这样做:

read these 32 characters - if( preg_match(/[^a-f0-9]/) ) { 
echo "this is a hex string"; 
} else {
$base64[] = preg_replace('/[a-f0-9]$/', '');
}
当然,有一个问题是尾随a-z/0-9,但这是一个起点。 您可以添加一些代码,从怀疑的base64的末尾到下一个[g-zA-Z]的开头进行计数,并查看该字符数是否可被32整除。如果是,那么您可能找到了所有原始base64。如果不是,你就不会知道“b”是你的b64的结尾,还是你的十六进制的开始,6是你的十六进制的结束,还是你下一个b64的开始


简而言之,这很愚蠢,让我很难过。

如果您的输入数据真的像您描述的那样,那么就没有“安全”的方法只提取base64数据并丢弃其他内容。也许你的输入可以用其他方式读取?你的数据源是什么?为什么会如此混乱?这似乎是一种糟糕的数据编码格式。你能控制是什么造成了这种混乱吗?128位,32字节=)不幸的是,这是我接收数据的唯一方法。但是,请注意,许多十六进制32字节字符串是重复的。这有帮助吗?如果你不能回答我这个问题,你就不能:“你怎么知道第一个base64块中的最后一个‘b’实际上不属于紧跟其后的十六进制块?”