PHP base64_编码返回不正确的结果
我正在尝试在base64中对令牌进行编码,以用作身份验证令牌。但是,PHP base64_编码返回不正确的结果,php,Php,我正在尝试在base64中对令牌进行编码,以用作身份验证令牌。但是,base64\u encode似乎没有提供正确的值 $encode = base64_encode("$this->access_token:"); var_dump("$this->access_token:"); var_dump($encode); 结果 string(31) "YfJF3NHGZbVUeWTVv-KtdQYV8Bwsal:" string(44) "WWZKRjNOSEdaYlZVZVdUV
base64\u 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)
我明白了。您的
openssl
正在考虑末尾的换行符。您的PHP代码很好,您应该只使用它
实际上:
EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:
<newline>
EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:
转换为您在openssl中看到的内容,
eiilmhgnib9jnhob62jpsoqovnrdltc:
转换为您在PHP中看到的内容 不应该base64\u编码($this->access\u令牌:)
bebase64\u编码($this->access\u令牌)代码>?没有引号。我在javascript上尝试了它,它返回的结果与PHP相同。我需要基本身份验证的冒号,谢谢你刚刚添加了\n
,$encode=base64\u encode($this->access\u token:\n”)代码>
EIiLMhGNib9JNH2ob62JpsoQoVNRdltc:
<newline>