Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Digest sha256 returns gibberish

by Athanasius (Monsignor)
on Aug 08, 2012 at 03:16 UTC ( #986128=note: print w/ replies, xml ) Need Help??


in reply to Digest sha256 returns gibberish

From Digest1:

  • binary
This is the most compact form, but it is not well suited for printing or embedding in places that can't handle arbitrary data.

Consider using sha256_base64, or stick with sha256_hex:

#! perl use strict; use warnings; use Digest::SHA qw(sha256_hex sha256_base64); my $data1 = '0123456789ABCDEF'; my $data2 = 'FEDCBA9876543210'; my $digest1 = sha256_hex ($data1 . $data2); my $digest3 = sha256_base64($data1 . $data2); print "This is a hexdigest->" . $digest1, "\n"; print "This is a base64digest->" . $digest3, "\n";

Output:

This is a hexdigest->b4a5e0ad9fce13bf90bcb09147ba9200431389e28fa40eaa2 +a0dcd41d6544470 This is a base64digest->tKXgrZ/OE7+QvLCRR7qSAEMTieKPpA6qKg3NQdZURHA

What output format do you need?

1 Referencing Digest, because SHA says: “The programming interface is easy to use: it’s the same one found in CPAN’s Digest module.”

Athanasius <°(((><contra mundum


Comment on Re: Digest sha256 returns gibberish
Select or Download Code
Re^2: Digest sha256 returns gibberish
by invalid_logic (Initiate) on Aug 08, 2012 at 03:50 UTC

    I'm hashing in order to verify pre-existing hash values that were generated with C++. The process and each steps results are documented but I'm following along in perl. So whatever the result I get, should match the authors examples.

    The following is the concatenated result:

    800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D

    Which needs to match the following string after hashing with sha256*:

    8147786C4D15106333BF278D71DADAF1079EF2D2440A4DDE37D747DED5403592

    I've tried with sha256_base64 and it doesn't match.

        This is what I'm following: https://en.bitcoin.it/wiki/Wallet_import_format

        The source code for the hex creation (see 'ToString') is here:

        https://github.com/bitcoin/bitcoin/blob/master/src/bignum.h

        As I'm just learning to program, I'm having trouble following the C++ code so instead trying to follow the wiki process. If they are concatenating the int(64) with something else, it's difficult for me to tell.

      You need to calculate sha256 on the binary form of this data, not on the hexademical string:
      $ perl '-MDigest::SHA "sha256_hex"' -E'say sha256_hex(pack("H*","800C2 +8FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D"))' 8147786c4d15106333bf278d71dadaf1079ef2d2440a4dde37d747ded5403592
      Sorry if my advice was wrong.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://986128]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (8)
As of 2014-12-27 02:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls