http://www.perlmonks.org?node_id=1018779


in reply to Simple Crypt::CBC Sample?

I was unable to install Crypt::Random, so I can't even attempt to replicate your error.

However, if I run a modified version of your code with only Crypt::CBC, it runs for me without errors:

use warnings; use strict; use Crypt::CBC; my $key = 1; my $cipher = Crypt::CBC->new( -key => $key ); my $ciphertext = $cipher->encrypt_hex('test'); print "$ciphertext \n"; __END__ 53616c7465645f5f5847db7edbe4cfb66a7ce84481016e42

Perhaps there is a strange interaction between the 2 modules. Can you use something else to generate the key?

Replies are listed 'Best First'.
Re^2: Simple Crypt::CBC Sample?
by boat73 (Scribe) on Feb 14, 2013 at 20:19 UTC
    Interesting, your code generates the error as well. At least I know I am not crazy, just need to figure out where the error is coming from. I am running perl 5.14.2.1402 on Windowz, are you running on Unix? Couldn't load Crypt::1: Can't locate Crypt/1.pm in @INC
      A look at the source code shows it may be doing a require:
      unless (ref $cipher) { # munge the class name if no object passed $cipher = $cipher=~/^Crypt::/ ? $cipher : "Crypt::$cipher"; $cipher->can('encrypt') or eval "require $cipher; 1" or croak "C +ouldn't load $cipher: $@"; # some crypt modules use the class Crypt::, and others don't $cipher =~ s/^Crypt::// unless $cipher->can('keysize'); }
      Yes, I'm on Unix, 2 variants:
      This is perl 5, version 12, subversion 2 (v5.12.2) built for x86_64-li +nux This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-li +nux-thread-multi