Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Simple Crypt::CBC Sample?

by boat73 (Scribe)
on Feb 14, 2013 at 19:54 UTC ( #1018776=perlquestion: print w/replies, xml ) Need Help??
boat73 has asked for the wisdom of the Perl Monks concerning the following question:

I have read docs and must be having a bad day. I have done some PGP encryption so maybe my understanding of the keys is mixing me up. I am just trying to get a snippet working using Crypt::CBC. What am I doing wroong, I am getting the error below. Any help is appreciated! Couldn't load Crypt::2238215281: Can't locate Crypt/
use Crypt::CBC; use Crypt::Random qw( makerandom ); $key = makerandom( Size => 32, Strength => 1); my $cipher = Crypt::CBC->new( -key => $key ); my $ciphertext = $cipher->encrypt_hex('test');

Replies are listed 'Best First'.
Re: Simple Crypt::CBC Sample?
by toolic (Bishop) on Feb 14, 2013 at 20:14 UTC
    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?

      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 on Windowz, are you running on Unix? Couldn't load Crypt::1: Can't locate Crypt/ 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
Re: Simple Crypt::CBC Sample?
by naChoZ (Curate) on Feb 14, 2013 at 22:24 UTC

    Instead of letting Crypt::CBC try and figure out a cipher on its own (where it's clearly picking 'Random' as the cipher you want to use in this case), you can specify one yourself...

    my $cipher = Crypt::CBC->new( -key => $key, cipher => 'Rijndael' );

    That will cause it to use Crypt::Rijndael for the cipher.


Re: Simple Crypt::CBC Sample?
by Anonymous Monk on Feb 15, 2013 at 17:12 UTC

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1018776]
Approved by toolic
[marioroy]: IPC in MCE::Shared can handle 400k (sends) per second. That's seems a lot for being a pure-Perl module. After making the release, will come back and post a solution for a node by a fellow wanting faster logging.
[Corion]: While working on WWW::Mechanize:: Chrome, I had the suspicion that AnyEvent was doing something wrong, but I was able to swap it out for Mojolicious and the error persisted.
[Corion]: Of course, the error was in my own code ;)
[marioroy]: Corion, start and start_child in MCE::Hobo::Manager return a MCE::Hobo object, whereas P::FM returns the PID. I can have it return the PID though. I tried Hobo::Manager with several P::FM modules, just changed P::FM to MCE::Hobo::Manager and it works.
[marioroy]: I also have a Hobo driver for Forklift allowing folks to use in multiple classes, no conflicts with one another. That's not possible for P::FM.
[Discipulus]: congrats marioroy!
[marioroy]: CORE::wait works well eventhough multiple instances or classes using Hobo::Manager.
[Corion]: marioroy: I'm not sure what the normal use for the PID is in P:FM, but I guess that most programs just ignore or log it
[Corion]: Oh, yes, programs could call wait $pid, but if your $pid is an object, then you could add a ->wait method to it and wait $pid would call that automatically "thanks" to indirect object notation
[marioroy]: Just documentation edits is all that remains. Hobo::Simple provides foreach and forseq with identifier capability -- all transparently supporting array, hash, file handle, and seq 1 .. N.

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2017-05-26 08:42 GMT
Find Nodes?
    Voting Booth?