in reply to Re^2: Perl SHA256
in thread Perl SHA256

None of the reply response examples work for emails.. It only works f +or "foobar".. Why are the online links and Linux different? How do +I get perl to give me what both Linux/Online return? https://xorbin.com/tools/sha256-hash-calculator joe.smith@aol.com --> 4d1612632ab95a0dec3d27f521d2b91cabe9e72a6b1ecdb8 +784e1ed6f3a93604 perl -E 'use Digest::SHA "sha256_hex"; say sha256_hex("joe.smith@aol.c +om")' --> 4ea2142392947d467539285b3c6e98f073d9d85910f2a1d535f86a95358 +ab9dd perl -E 'use Digest::SHA "sha256_hex"; say sha256_hex("joe.smith@aol.c +om")' --> 4ea2142392947d467539285b3c6e98f073d9d85910f2a1d535f86a9535 +8ab9dd perl -e 'print "joe.smith@aol.com"' | shasum -a 256 --> 4ea2142392947d +467539285b3c6e98f073d9d85910f2a1d535f86a95358ab9dd - https://codebeautify.org/sha256-hash-generator joe.smith@aol.com --> 4d1612632ab95a0dec3d27f521d2b91cabe9e72a6b1ecdb8 +784e1ed6f3a93604 Linux echo "joe.smith@aol.com" | shasum -a 256 --> d6220b1b3a4a67731d5ca82c1 +01cec2c30069ed674c04576e78322c1fbca1c92 - Linux echo joe.smith@aol.com | shasum -a 256 --> d6220b1b3a4a67731d5ca82c101 +cec2c30069ed674c04576e78322c1fbca1c92 - Linux printf %s "joe.smith@aol.com" | sha256sum --> 4d1612632ab95a0dec3d27f5 +21d2b91cabe9e72a6b1ecdb8784e1ed6f3a93604 - Linux echo -n "joe.smith@aol.com" | openssl dgst -sha256 --> (stdin)= 4d1612 +632ab95a0dec3d27f521d2b91cabe9e72a6b1ecdb8784e1ed6f3a93604

Replies are listed 'Best First'.
Re^4: Perl SHA256
by hippo (Archbishop) on Feb 14, 2023 at 13:42 UTC

    Works fine for me with the proper quoting.

    $ echo -n joe.smith@aol.com | sha256sum 4d1612632ab95a0dec3d27f521d2b91cabe9e72a6b1ecdb8784e1ed6f3a93604 - $ perl -MDigest::SHA=sha256_hex -E 'say sha256_hex(q/joe.smith@aol.com +/)' 4d1612632ab95a0dec3d27f521d2b91cabe9e72a6b1ecdb8784e1ed6f3a93604

    Your problem is that you are using double quotes which interpolate and using neither strict nor warnings which would have drawn your attention to the undeclared and uninitialised array.

    $ perl -wE 'use Digest::SHA "sha256_hex"; say sha256_hex("joe.smith@ao +l.com")' Possible unintended interpolation of @aol in string at -e line 1. Name "main::aol" used only once: possible typo at -e line 1. 4ea2142392947d467539285b3c6e98f073d9d85910f2a1d535f86a95358ab9dd $ perl -Mstrict -wE 'use Digest::SHA "sha256_hex"; say sha256_hex("joe +.smith@aol.com")' Possible unintended interpolation of @aol in string at -e line 1. Global symbol "@aol" requires explicit package name (did you forget to + declare "my @aol"?) at -e line 1. Execution of -e aborted due to compilation errors.

    Always use strict and warnings. Always.


    🦛

      Hi Hippo.. Your command works fine on the command line.. I can't get it to work in the perl script using a variable for the email.. If I assign your example exactly it works fine.. But if I try to use a variable for a literal email it fails despite everything I've tried to make it work.. I've even tried to build a concatenated string or use substitution to replace a dummy "EMAIL" with actual value.. I've tried every Google search I can think of.. Any suggestions?

      This example works fine $SENDVAR1 = q(perl -MDigest::SHA=sha256_hex -E 'say sha256_hex(q/XXXX/ +)'); my $email_SHA256 = print qx($SENDVAR1); This doesn't work: $SENDVAR1 = q(perl -MDigest::SHA=sha256_hex -E 'say sha256_hex(q/$EMAI +L_IN/)'); my $email_SHA256 = print qx($SENDVAR1);

        Why are you shelling out and running a command line when you can just use the module within your code?

        #!/usr/bin/perl use strict; use warnings; use Digest::SHA qw(sha256_hex); my $email = 'test@example.com'; my $email_sha256 = sha256_hex( $email ); print "$email_sha256\n";
        A reply falls below the community's threshold of quality. You may see it by logging in.
        I think this tutorial page from szabgab's website will be helpful for you.
        q/$EMAIL_IN/ is a string consisting of a dollar sign, capital letter E, capital letter M, etc. That's probably not what you want.
Re^4: Perl SHA256
by choroba (Cardinal) on Feb 14, 2023 at 22:49 UTC
    Please, don't use the code tag for normal text.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
Re^4: Perl SHA256
by Anonymous Monk on Feb 15, 2023 at 02:24 UTC
    Linux
    echo joe.smith@aol.com | shasum -a 256 --> d6220b1b3a4a67731d5ca82c101cec2c30069ed674c04576e78322c1fbca1c92  -
    
    Use -n to prevent echo from including invisible newline character:
    echo -n joe.smith@aol.com | shasum -a 256
    4d1612632ab95a0dec3d27f521d2b91cabe9e72a6b1ecdb8784e1ed6f3a93604  -