3

我正在尝试 base58perl.pl 使用以下命令在我的终端中运行:

perl base58perl.pl

但我收到以下错误:

Cannot decode! Invalid Base58 Character(s)!

这是代码:

my $fileSrc = 'base58.txt';
open my $fhSrc, $fileSrc or die "Could not open $fileSrc: $!";

my $fileDest = 'hex.txt';
open( my $fhDest, '>>', $fileDest) or die "Could not open file $fileDest: $!";

while ( my $base58_encoded_address = <$fhSrc >)  {   
    my $binary_address = decodebase58tohex($base58_encoded_address);
    say $fhDest $binary_address;
}

close $fhSrc;
close $fhDest;

内容为base58.txtbase58形式的BTC地址列表。

我也试过

chmod a+x base58perl.pl
perl base58perl.pl

base58.txt 内容:

1E5PBfSaFawBy1RjBHkS6FDtCwXkYSsVTo
1DCgptTS2uY2occbVdW1qcVT72T75RXbyg
1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb 

我仍然得到同样的错误。

4

4 回答 4

0

您可能需要删除空格。您似乎一次只将字符串的一部分传递给 decode 函数,这也可能是一个问题。将整个文件读入一个 var,删除所有空格,然后解码。

my $base58_encoded_address = do { local $/; <$fhSrc> };
$base58_encoded_address =~ s/\s+//g;
my $binary_address = decodebase58tohex($base58_encoded_address);
say $fhDest $binary_address;
于 2017-11-22T15:16:25.390 回答
0
my $fileSrc = 'base58.txt';
open my $fhSrc, $fileSrc or die "Could not open $fileSrc: $!";

my $fileDest = 'hex.txt';
open( my $fhDest, '>>', $fileDest) or die "Could not open file $fileDest: $!";

my @tmp = <$fhSrc>;
chomp @tmp;
for my $line (@tmp)  {   
    print "decoding '$line'\n";
    my $binary_address = decodebase58tohex($line);
    say $fhDest $binary_address;
}

close $fhSrc;
close $fhDest;

正如其他人提到的,我认为您在处理空格。chomp 会为你解决这个问题。

接下来要做的是在引号中打印您尝试解码的字符串,这将确认您仅解码您想要的内容。

于 2017-11-24T05:18:24.357 回答
0

该脚本现在可以正常工作,问题是base58.txt该文件是使用记事本创建的。我使用不同的文本编辑器创建了一个新文件。

于 2017-11-23T11:56:27.560 回答
0

该错误消息来自unbase58您链接的代码中的函数。

die "Cannot Decode! Invalid Base58 Character(s)!\n" unless $bitcoin_address =~ /^[1-9A-HJ-NP-Za-km-z]*$/;

该行检查输入是否仅包含字符组的字符[1-9A-HJ-NP-Za-km-z]。由于您的输入确实如此,它必须不喜欢其他东西。

我的猜测是它不喜欢行尾的换行符。在chomp将值传递给decodebase58tohex.

while( my $base58_encoded_address = <$fhSrc>)  {   
    chomp $base58_encoded_address;
    my $binary_address = decodebase58tohex($base58_encoded_address);
    say $fhDest $binary_address;
}
于 2017-11-22T13:53:13.550 回答