Hi, Thanks for the reply.
You are right and i will try to make my self more clear.
I want to run this code on a linux system, that is, I want to convert a string in the same way.
I don't know how to accomplish this in perl, and i would appreciate the help.
when i run the code above on the string "7512" i get: cA5YjDeU2fOJwwnVFPCuAw==
i tried using linux cli and openssl, like this:
echo -ne "7512" | openssl dgst -md5 -binary | openssl base64
but i get the following output:
FhxcWtUfzIhBV4kFEbPIsA==
do you have any idea how would i do that in perl?
| [reply] [d/l] |
when i run the code above on the string "7512" i get: cA5YjDeU2fOJwwnVFPCuAw==
Apparently, UnicodeEncoding encodes to UTF-16LE - at least that's what your sample seems to show. So in Perl, you'll have to use the Encode module for that, and then either use md5_base64 from Digest::MD5, which removes the padding at the end of the string (==), or, if you want the padding, you'll have to use MIME::Base64 separately:
use warnings;
use strict;
use Encode qw/encode/;
use Digest::MD5 qw/md5/;
use MIME::Base64 qw/encode_base64/;
my $string = "7512";
my $md5b64 = encode_base64( md5( encode( 'UTF-16LE', $string,
Encode::FB_CROAK|Encode::LEAVE_SRC ) ), "" );
print "Generated String is: MD5:$md5b64\n";
my $expect = "cA5YjDeU2fOJwwnVFPCuAw==";
print $md5b64 eq $expect ? "Matches!\n" : "Doesn't match!\n";
__END__
Generated String is: MD5:cA5YjDeU2fOJwwnVFPCuAw==
Matches!
| [reply] [d/l] [select] |
| [reply] |
| [reply] |