PHP base64_encode返回错误的结果

时间:2017-03-04 07:37:27

标签: php

我正在尝试在base64中编码令牌以用作身份验证令牌。但是,base64_encode似乎没有提供正确的值。

$encode = base64_encode("$this->access_token:");
var_dump("$this->access_token:");
var_dump($encode);

结果

string(31) "YfJF3NHGZbVUeWTVv-KtdQYV8Bwsal:"
string(44) "WWZKRjNOSEdaYlZVZVdUVnYtS3RkUVlWOEJ3c2FsOg==" 

如果我在命令行上运行此命令,它会为我提供与api

一起使用的正确令牌
openssl base64 <<< YfJF3NHGZbVUeWTVv-KtdQYV8Bwsal:
WWZKRjNOSEdaYlZVZVdUVnYtS3RkUVlWOEJ3c2FsOgo=
WWZKRjNOSEdaYlZVZVdUVnYtS3RkUVlWOEJ3c2FsOg== (php result for comparison)

另一个例子

EIiLMhGNib9JNH2ob62JpsoQoVNRdltc: (access token)
RUlpTE1oR05pYjlKTkgyb2I2Mkpwc29Rb1ZOUmRsdGM6Cg== (openssl)
RUlpTE1oR05pYjlKTkgyb2I2Mkpwc29Rb1ZOUmRsdGM6     (php)

1 个答案:

答案 0 :(得分:1)

我明白了。您的openssl考虑到最后的换行符。你的PHP代码很好,你应该只使用它。

实际上:

EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:
<newline>

转换为您在openssl中看到的内容,EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:转换为您在PHP中看到的内容。