SHA-256: Difference between revisions
→{{header|Perl 6}}: style: having &init return a lazy list as well
m (→{{header|Perl 6}}: style) |
(→{{header|Perl 6}}: style: having &init return a lazy list as well) |
||
Line 169:
<lang Perl 6>say .list».fmt("%02x").join given sha256 "Rosetta code";
constant primes = grep
sub init(&f) {
sub infix:<m+> { ($^a + $^b) % 2**32 }
Line 180 ⟶ 182:
}
multi sha256(Buf $data) {
my \K = init
my $l = 8 * my @b = $data.list;
push @b, 0x80; push @b, 0 until (8*@b-448) %% 512;
Line 186 ⟶ 188:
push @b, reverse gather for ^8 { take $l%256; $l div=256 }
my @word = gather for @b -> $a, $b, $c, $d {
}
my @H = init
my @w;
loop (my $i = 0; $i < @word.elems; $i += 16) {
@w[$j] = $j < 16 ?? @word[$j + $i] // 0 !!
}
▲ }
}
return Buf.new: map -> $word is rw {
}, @H;
}</lang>
|