# We can construct authenticated ciphers: my $authcipha = new Crypt::CBC({header=>"randomiv", key=>$K_01_a->as_bytes, cipher=>"Blowfish"}); my $authciphb = new Crypt::CBC({header=>"randomiv", key=>$K_01_b->as_bytes, cipher=>"Blowfish"}); # or we can use the secrets to construct authentic clear-text messages: my @verifiable_message; SCOPE1: { my $msg = "This is verifiable."; my $sha = new Digest::SHA1; $sha->add( $msg ); $sha->add( $K_01_a->as_bytes ); my $MAC = $sha->digest; @verifiable_message = ( $msg, $MAC ); } SCOPE2: { my $sha = new Digest::SHA1; $sha->add( $verifiable_message[0] ); $sha->add( $K_01_b->as_bytes ); my $MAC = $sha->digest; print "Verified message from ID_0: $verifiable_message[0]\n\n" if $MAC eq $verifiable_message[1]; }