2017-08-28 41 views
3

所以我打算使用SHA-512和PBKDF2來實現Bitcoin BIP-039。我已經設法確定SHA-512屬於SHA2,但是當我將其指定爲散列函數時,即使使用64字節輸出,它仍然會報告爲使用SHA-256。我錯過了什麼嗎?我試着在hash_class中添加+512,但是沒有奏效。如何在Perl中用Crypt :: PBKDF2實現sha-512?

#!/usr/bin/perl 
# 
use Crypt::PBKDF2; 
my $sentence="Hellothere"; 
my $salt="mnemonic"; 
my $pbkdf2 = Crypt::PBKDF2->new(
    hash_class => 'HMACSHA2', # 
    iterations => 2048,  # 
    output_len => 64,  # 
); 
my $hash = $pbkdf2->generate($sentence,$salt); 
print "$hash\n"; 

給人

{X-PBKDF2}HMACSHA2+256:AAAIAA:bW5lbW9uaWM=:NLw67sZbhQYsPhrEYm9e5ruslS6/ivK1vDfICtCN07rb7RuBkQxAoZIyTG7sTmsob30JwoP64Fvzpjx6Cqc+KQ== 

回答

4

通過這項新的()調用的作品。

hash_args=>{sha_size => 512} 
{X-PBKDF2}HMACSHA2+512:AAAIAA:bW5lbW9uaWM=:WG00S/OSlPeYJ/HWeIPkVdQHpSXnpzG0Ixb+j70pbgDgdCAemPBLbjYBbcUtnfSS2dzMJng73eAlGSSnDi+dDQ== 
0
use Crypt::KeyDerivation 'pbkdf2'; 
my $data = pbkdf2("Hellothere", "mnemonic", 2048, 'SHA512', 64); 
print unpack("H*", $data), "\n";