【发布时间】:2017-05-29 11:36:03
【问题描述】:
我需要为身份验证字符串解码 base64 令牌,我在 Python、Perl 和 PHP 中找到了一些工作示例,并在 Node 中编写了等效代码,但遇到了一个问题。 Node 的 base64 解码器似乎与其他 3 种语言的工作方式不同。
在 Python 中运行它
token = 'BaSe64sTRiNghERe'
decoded_token = token.decode('base64')
print decoded_token
返回这个字符串
???F#`?D^
在 Perl 中运行
my $token = 'BaSe64sTRiNghERe';
my $decoded_token = decode_base64($token);
print $decoded_token;
返回这个字符串
???F#`?D^
在 PHP 中运行它
$token = 'BaSe64sTRiNghERe';
$decoded_token = base64_decode($token, true);
echo $decoded_token;
返回这个字符串
???F#`?D^
最后,在 Node 脚本中运行它
var token = 'BaSe64sTRiNghERe',
decoded_token = Buffer.from(token, 'base64').toString();
console.log(decoded_token);
返回这个字符串
????F#`?D^
问题是,为什么解码后的字符串中有多余的问号?以及如何在 Node 中获得与在 Perl、Python 和 PHP 中相同的结果?
更新
在命令行中运行
echo BaSe64sTRiNghERe | base64 --decode
提供与 perl、python 和 php 脚本相同的输出
但从节点运行相同的命令
var exec = require('child_process').exec;
exec('echo BaSe64sTRiNghERe | base64 --decode', function callback(error, stdout, stderr){
console.log(stdout);
});
我仍然得到错误的东西。
【问题讨论】:
-
您是否尝试过真正的令牌 - 即。
QmFTZTY0c1RSaU5naEVSZQ==- 解码后得到BaSe64sTRiNghERe
标签: php python node.js base64 decoding