NodeJS缓冲区在PHP中等效

时间:2017-07-16 18:28:26

标签: php node.js buffer

NodeJS代码:

const salt = new Buffer('GHlDHToiZA1ViUu+W+EXww==', 'base64');

输出如下:

<Buffer 18 79 43 1d 3a 22 64 0d 55 89 4b be 5b e1 17 c3>

我在PHP中需要相同的输出。阅读有关PHP的pack函数的某处,但我不知道如何使用它。

2 个答案:

答案 0 :(得分:0)

似乎您正在使用base64;在php中,您是正确的<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ececec" tools:context=".MainActivity"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <include android:id="@+id/toolbar" layout="@layout/toolbar_top" /> <include android:id="@+id/toolbar2" layout="@layout/toolbar_bot" /> </android.support.design.widget.AppBarLayout> </LinearLayout> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="fill_vertical" app:layout_behaviour="@string/appbar_scrolling_view_behaviour"> <!--STARTWEBVIEW --> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible"/> <!--ENDWEBVIEW--> </android.support.v4.widget.NestedScrollView> </android.support.constraint.ConstraintLayout> pack是您的朋友。

示例

在节点中

unpack

在PHP中

$ node
> Buffer('hello world').toString('base64')
aGVsbG8gd29sZA==

但是,如果您只是在寻找二进制文件:

在节点中

$ php -a
php > echo base64_encode('hello world');
aGVsbG8gd29ybGQ=

在PHP中

> Buffer('hello wold')
<Buffer 68 65 6c 6c 6f 20 77 6f 6c 64>

因此,在您的实例中,您将首先解码base64,然后将其解压缩。

php > print_r(unpack('H*', 'hello world'));
Array
(
    [1] => 68656c6c6f20776f726c64
)

轻松自在;)

答案 1 :(得分:0)

我遇到了同样的问题,我使用数据包找到了解决方案:lcobucci/jwt。

必须在 base64 中通过您的密钥创建缓冲区,创建后将转换为二进制以对 jwt 进行签名。

  $configuration = Configuration::forSymmetricSigner(
                // You may use any HMAC variations (256, 384, and 512)
                new Sha256(),
                // replace the value below with a key of your own!
                InMemory::base64Encoded('your-base64-key')
                // You may also override the JOSE encoder/decoder if needed by providing extra arguments here
            );