Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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编码的uint8字节编码为十六进制_Php_Shell_Base64_Bin2hex_Od - Fatal编程技术网

PHP编码问题:如何将base64编码的uint8字节编码为十六进制

PHP编码问题:如何将base64编码的uint8字节编码为十六进制,php,shell,base64,bin2hex,od,Php,Shell,Base64,Bin2hex,Od,我的问题是,我不久前用C(作为uint8_t)对openssl sha256中的随机字节进行base64编码,将它们输入shell脚本并使用输出。 我现在可以从我的数据中重新创建: file.txt的内容: uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo test@test:~#base64-d file.txt | od-t x1 0000000 ba f8 d6 10 74 d4 93 52 e7 cd 56 6e 97 dc a7 46 00000

我的问题是,我不久前用C(作为uint8_t)对openssl sha256中的随机字节进行base64编码,将它们输入shell脚本并使用输出。 我现在可以从我的数据中重新创建:


file.txt的内容: uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo

test@test:~#base64-d file.txt | od-t x1
0000000 ba f8 d6 10 74 d4 93 52 e7 cd 56 6e 97 dc a7 46
00000 20 97 b3 59 f2 98 37 76 ef 97 1d 74 df 0c 40 0b 1a

输出与在PHP中调用相同:

echo bin2hex(base64_解码(“uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo=”)
baf8d61074d49352e7cd566e97dca74697b359f2983776ef971d74df0c400b1a


我一直在shell中做的事情以及现在在PHP中需要做的事情如下:

同样,file.txt的相同内容: uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo

test@test:~#base64-d file.txt | od-t x8
0000000 5293d47410d6f8ba 46a7dc976e56cde7
0000020 ef763798f259b397 1a0b400cdf741d97

我的问题是:现在PHP中的相等过程是什么(到shell中的od-t x8)? 我试过打包/解包/bin2hex/。。。而不能得到同样的结果

我正在尝试获取包含以下内容的字符串: “5293d47410d6f8ba46a7dc976e56cde7ef763798f259b3971a0b400cdf741d97”


base64_解码的起点(“uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo=”)
。有什么想法吗?

如果您真正需要的是
x8
,即8字节,那么实现将非常简单

<?php

$str = 'uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo';
$bin = base64_decode($str);

if (strlen($bin) % 8 !== 0) {
    throw new \RuntimeException('data length should be divisible by 8');
}

$result = '';

for ($i = 0; $i < strlen($bin); $i += 8) {
    for ($j = $i + 7; $j >= $i; --$j) {
        $result .= bin2hex($bin[$j]);
    }
}

echo $result;

echo bin2hex(base64_decode($x))
的对立面不是
base64_encode(hex2bin($x))
?@miken32完全正确,而是base64_encode(hex2bin(“5293d47410d6f8ba46a7dc976e56cde7ef763798f259b3971a0b400cdf741d97”);这不是我需要/寻找的(uvjWEHTUk1LnzVZul9ynRpezWfKYN3bvlx103wxACxo)您是否意识到
x8
是8字节而不是8位?你真的需要
x8
而不是
x1
?@zerkms是的,现在我知道最初的假设是错误的,但现在已经太晚了。x8是必需的…非常感谢您解决了这个问题,它很有效!正如您所评论的,x8是一个错误的选择,但是由于数据已经像这样记录,您的答案是正确的。