Digest::SHA3 is written in C for speed. If your platform lacks a C compiler, perhaps you can find the module in a binary form compatible with your particular processor and operating system.
The programming interface is easy to use: it's the same one found in CPAN's Digest module. So, if your applications currently use Digest::SHA and you'd prefer the newer flavor of the NIST standard, it's a simple matter to convert them.
The interface provides two ways to calculate digests: all-at-once, or in stages. To illustrate, the following short program computes the SHA3-256 digest of "hello world" using each approach:
use Digest::SHA3 qw(sha3_256_hex); $data = "hello world"; @frags = split(//, $data);
$digest1 = sha3_256_hex($data);
$state = Digest::SHA3->new(256); for (@frags) { $state->add($_) } $digest2 = $state->hexdigest;
print $digest1 eq $digest2 ? "that's the ticket!\n" : "oops!\n";
To calculate the digest of an n-bit message where n is not a multiple of 8, use the add_bits() method. For example, consider the 446-bit message consisting of the bit-string "110" repeated 148 times, followed by "11". Here's how to display its SHA3-512 digest:
use Digest::SHA3; $bits = "110" x 148 . "11"; $sha3 = Digest::SHA3->new(512)->add_bits($bits); print $sha3->hexdigest, "\n";
Note that for larger bit-strings, it's more efficient to use the two-argument version add_bits($data, $nbits), where $data is in the customary packed binary format used for Perl strings.