Twoflower has asked for the wisdom of the Perl Monks concerning the following question:

What's the standard encryption method used in perl?

Replies are listed 'Best First'.
Re: Standard encryption
by rinceWind (Monsignor) on Aug 09, 2002 at 12:38 UTC
    Not sure what you mean by standard encryption method. You could be referring to the crypt function. From perdoc perlfunc:

    crypt

    crypt PLAINTEXT,SALT

    Encrypts a string exactly like the crypt(3) function in the C library (assuming that you actually have a version there that has not been extirpated as a potential munition). This can prove useful for checking the password file for lousy passwords, amongst other things. Only the guys wearing white hats should do this.

    ...

    In terms of encryption in general, there are many modules available on CPAN.

Re: Standard encryption
by demerphq (Chancellor) on Aug 09, 2002 at 13:40 UTC
    Obfu

    :-)

    Check out the Crypt:: modules on cpan:

    Module Crypt::Blowfish (D/DP/DPARIS/Crypt-Blowfish-2.09.tar.g +z) Module Crypt::Blowfish_PP (M/MA/MATTBM/Crypt-Blowfish_PP-1.12 +.tar.gz) Module Crypt::CAST5_PP (B/BO/BOBMATH/Crypt-CAST5_PP-1.01.tar. +gz) Module Crypt::CBC (L/LD/LDS/Crypt-CBC-2.05.tar.gz) Module Crypt::CBCeasy (M/MB/MBLAZ/Crypt-CBCeasy-0.24.tar.gz) Module Crypt::CFB (B/BA/BAUERM/Crypt-CFB-0.01.tar.gz) Module Crypt::Caesar (J/JU/JUERD/Crypt-Caesar-0.01.tar.gz) Module Crypt::CipherSaber (C/CH/CHROMATIC/Crypt-CipherSaber-0 +.61.tar.gz) Module Crypt::Cracklib (D/DA/DANIEL/Crypt-Cracklib-0.01.tar.g +z) Module Crypt::Ctr (B/BA/BAUERM/Crypt-Ctr-0.01.tar.gz) Module Crypt::DES (D/DP/DPARIS/Crypt-DES-2.03.tar.gz) Module Crypt::DES_EDE3 (B/BT/BTROTT/Crypt-DES_EDE3-0.01.tar.g +z) Module Crypt::DES_PP (G/GU/GUIDO/Crypt-DES_PP-1.00.tar.gz) Module Crypt::DH (B/BT/BTROTT/Crypt-DH-0.03.tar.gz) Module Crypt::DSA (B/BT/BTROTT/Crypt-DSA-0.12.tar.gz) Module Crypt::DSA::Key (B/BT/BTROTT/Crypt-DSA-0.12.tar.gz) Module Crypt::DSA::Key::PEM (B/BT/BTROTT/Crypt-DSA-0.12.tar.g +z) Module Crypt::DSA::Key::SSH2 (B/BT/BTROTT/Crypt-DSA-0.12.tar. +gz) Module Crypt::DSA::KeyChain (B/BT/BTROTT/Crypt-DSA-0.12.tar.g +z) Module Crypt::DSA::Signature (B/BT/BTROTT/Crypt-DSA-0.12.tar. +gz) Module Crypt::DSA::Util (B/BT/BTROTT/Crypt-DSA-0.12.tar.gz) Module Crypt::ECB (A/AP/APPEL/Crypt-ECB-1.1-2.tar.gz) Module Crypt::ElGamal (Contact Author Vipul Ved Prakash <mai +l@vipul.net>) Module Crypt::Enigma (J/JB/JBLAKEY/Crypt-Enigma-1.1.tar.gz) Module Crypt::GOST (A/AM/AMS/Crypt-GOST-1.00.tar.gz) Module Crypt::GOST_PP (S/SI/SIFUKURT/Crypt-GOST_PP-1.10.tar. +gz) Module Crypt::GPG (A/AG/AGUL/Crypt-GPG-1.28.tar.gz) Module Crypt::HCE_MD5 (E/EE/EESTABROO/Crypt-HCE_MD5-0.60.tar +.gz) Module Crypt::HCE_SHA (E/EE/EESTABROO/Crypt-HCE_SHA-0.60.tar +.gz) Module Crypt::IDEA (D/DP/DPARIS/Crypt-IDEA-1.01.tar.gz) Module Crypt::Keys (B/BT/BTROTT/Crypt-Keys-0.06.tar.gz) Module Crypt::Keys::Buffer (B/BT/BTROTT/Crypt-Keys-0.06.tar.g +z) Module Crypt::Keys::ErrorHandler (B/BT/BTROTT/Crypt-Keys-0.06 +.tar.gz) Module Crypt::Keys::Private::DSA::PEM (B/BT/BTROTT/Crypt-Keys +-0.06.tar.gz) Module Crypt::Keys::Private::DSA::SSH2 (B/BT/BTROTT/Crypt-Key +s-0.06.tar.gz) Module Crypt::Keys::Private::RSA::PEM (B/BT/BTROTT/Crypt-Keys +-0.06.tar.gz) Module Crypt::Keys::Private::RSA::SSH1 (B/BT/BTROTT/Crypt-Key +s-0.06.tar.gz) Module Crypt::Keys::Public::DSA::OpenSSH (B/BT/BTROTT/Crypt-K +eys-0.06.tar.gz) Module Crypt::Keys::Public::RSA::OpenSSH (B/BT/BTROTT/Crypt-K +eys-0.06.tar.gz) Module Crypt::Keys::Public::RSA::SSH1 (B/BT/BTROTT/Crypt-Keys +-0.06.tar.gz) Module Crypt::Keys::Util (B/BT/BTROTT/Crypt-Keys-0.06.tar.gz) Module Crypt::Memfrob (K/KN/KNAGANO/Crypt-Memfrob-1.00.tar.g +z) Module Crypt::Mimetic (E/ER/ERICH/Crypt-Mimetic-0.01.tar.gz) Module Crypt::Mimetic::CipherSaber (E/ER/ERICH/Crypt-Mimetic- +0.01.tar.gz) Module Crypt::Mimetic::None (E/ER/ERICH/Crypt-Mimetic-0.01.ta +r.gz) Module Crypt::Mimetic::TEA (E/ER/ERICH/Crypt-Mimetic-0.01.tar +.gz) Module Crypt::NULL (A/AM/AMS/Crypt-NULL-1.02.tar.gz) Module Crypt::OOEnigma (S/SJ/SJBAKER/Crypt-OOEnigma-0.1.tar.g +z) Module Crypt::OOEnigma::Commercial (S/SJ/SJBAKER/Crypt-OOEnig +ma-0.1.tar.gz) Module Crypt::OOEnigma::Military (S/SJ/SJBAKER/Crypt-OOEnigma +-0.1.tar.gz) Module Crypt::OOEnigma::Plugboard (S/SJ/SJBAKER/Crypt-OOEnigm +a-0.1.tar.gz) Module Crypt::OOEnigma::Reflector (S/SJ/SJBAKER/Crypt-OOEnigm +a-0.1.tar.gz) Module Crypt::OOEnigma::Rotor (S/SJ/SJBAKER/Crypt-OOEnigma-0. +1.tar.gz) Module Crypt::OTP (S/SI/SIFUKURT/Crypt-OTP-1.03.tar.gz) Module Crypt::OpenPGP (B/BT/BTROTT/Crypt-OpenPGP-1.01.tar.gz +) Module Crypt::OpenPGP::Armour (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::Buffer (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::CFB (B/BT/BTROTT/Crypt-OpenPGP-1.01.ta +r.gz) Module Crypt::OpenPGP::Certificate (B/BT/BTROTT/Crypt-OpenPGP +-1.01.tar.gz) Module Crypt::OpenPGP::Cipher (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::Ciphertext (B/BT/BTROTT/Crypt-OpenPGP- +1.01.tar.gz) Module Crypt::OpenPGP::Compressed (B/BT/BTROTT/Crypt-OpenPGP- +1.01.tar.gz) Module Crypt::OpenPGP::Config (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::Constants (B/BT/BTROTT/Crypt-OpenPGP-1 +.01.tar.gz) Module Crypt::OpenPGP::Digest (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::ErrorHandler (B/BT/BTROTT/Crypt-OpenPG +P-1.01.tar.gz) Module Crypt::OpenPGP::Key (B/BT/BTROTT/Crypt-OpenPGP-1.01.ta +r.gz) Module Crypt::OpenPGP::Key::Public (B/BT/BTROTT/Crypt-OpenPGP +-1.01.tar.gz) Module Crypt::OpenPGP::Key::Public::DSA (B/BT/BTROTT/Crypt-Op +enPGP-1.01.tar.gz) Module Crypt::OpenPGP::Key::Public::ElGamal (B/BT/BTROTT/Cryp +t-OpenPGP-1.01.tar.gz) Module Crypt::OpenPGP::Key::Public::RSA (B/BT/BTROTT/Crypt-Op +enPGP-1.01.tar.gz) Module Crypt::OpenPGP::Key::Secret (B/BT/BTROTT/Crypt-OpenPGP +-1.01.tar.gz) Module Crypt::OpenPGP::Key::Secret::DSA (B/BT/BTROTT/Crypt-Op +enPGP-1.01.tar.gz) Module Crypt::OpenPGP::Key::Secret::ElGamal (B/BT/BTROTT/Cryp +t-OpenPGP-1.01.tar.gz) Module Crypt::OpenPGP::Key::Secret::RSA (B/BT/BTROTT/Crypt-Op +enPGP-1.01.tar.gz) Module Crypt::OpenPGP::KeyBlock (B/BT/BTROTT/Crypt-OpenPGP-1. +01.tar.gz) Module Crypt::OpenPGP::KeyRing (B/BT/BTROTT/Crypt-OpenPGP-1.0 +1.tar.gz) Module Crypt::OpenPGP::KeyServer (B/BT/BTROTT/Crypt-OpenPGP-1 +.01.tar.gz) Module Crypt::OpenPGP::MDC (B/BT/BTROTT/Crypt-OpenPGP-1.01.ta +r.gz) Module Crypt::OpenPGP::Marker (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::Message (B/BT/BTROTT/Crypt-OpenPGP-1.0 +1.tar.gz) Module Crypt::OpenPGP::OnePassSig (B/BT/BTROTT/Crypt-OpenPGP- +1.01.tar.gz) Module Crypt::OpenPGP::PacketFactory (B/BT/BTROTT/Crypt-OpenP +GP-1.01.tar.gz) Module Crypt::OpenPGP::Plaintext (B/BT/BTROTT/Crypt-OpenPGP-1 +.01.tar.gz) Module Crypt::OpenPGP::S2k (B/BT/BTROTT/Crypt-OpenPGP-1.01.ta +r.gz) Module Crypt::OpenPGP::SKSessionKey (B/BT/BTROTT/Crypt-OpenPG +P-1.01.tar.gz) Module Crypt::OpenPGP::SessionKey (B/BT/BTROTT/Crypt-OpenPGP- +1.01.tar.gz) Module Crypt::OpenPGP::Signature (B/BT/BTROTT/Crypt-OpenPGP-1 +.01.tar.gz) Module Crypt::OpenPGP::Signature::SubPacket (B/BT/BTROTT/Cryp +t-OpenPGP-1.01.tar.gz) Module Crypt::OpenPGP::Trust (B/BT/BTROTT/Crypt-OpenPGP-1.01. +tar.gz) Module Crypt::OpenPGP::UserID (B/BT/BTROTT/Crypt-OpenPGP-1.01 +.tar.gz) Module Crypt::OpenPGP::Util (B/BT/BTROTT/Crypt-OpenPGP-1.01.t +ar.gz) Module Crypt::OpenPGP::Words (B/BT/BTROTT/Crypt-OpenPGP-1.01. +tar.gz) Module Crypt::OpenSSL::BN (Contact Author Ian Robertson <irob +erts+perl@red-bean.com>) Module Crypt::OpenSSL::DSA (T/TJ/TJMATHER/Crypt-OpenSSL-DSA-0 +.03.tar.gz) Module Crypt::OpenSSL::RSA (I/IR/IROBERTS/Crypt-OpenSSL-RSA-0 +.16.tar.gz) Module Crypt::OpenSSL::Random (I/IR/IROBERTS/Crypt-OpenSSL-Ra +ndom-0.03.tar.gz) Module Crypt::PGP (Contact Author Ashish Gulhati <agul@c +pan.org>) Module Crypt::PGP2 (J/JB/JBRIGGS/Crypt-PGP2-0.03.tar.gz) Module Crypt::PGP5 (A/AG/AGUL/Crypt-PGP5-1.38.tar.gz) Module Crypt::PGP6 (Contact Author Ashish Gulhati <agul@c +pan.org>) Module Crypt::PGPSimple (J/JH/JHINKLE/Crypt-PGPSimple-0.13.ta +r.gz) Module Crypt::PPDES (V/VI/VIPUL/Crypt-TripleDES-0.24.tar.g +z) Module Crypt::PRSG (Contact Author Gary Howland <gary@hot +lava.com>) Module Crypt::PassGen (T/TJ/TJENNESS/Crypt-PassGen-0.02.tar. +gz) Module Crypt::Passwd (L/LU/LUISMUNOZ/Crypt-Passwd-0.03.tar. +gz) Module Crypt::PasswdMD5 (L/LU/LUISMUNOZ/Crypt-PasswdMD5-1.2.t +ar.gz) Module Crypt::Primes (V/VI/VIPUL/Crypt-Primes-0.49.tar.gz) Module Crypt::RC4 (S/SI/SIFUKURT/Crypt-RC4-2.02.tar.gz) Module Crypt::RC5 (S/SI/SIFUKURT/Crypt-RC5-1.01.tar.gz) Module Crypt::RC6 (J/JH/JHUGHES/Crypt-RC6-1.0.tar.gz) Module Crypt::RIPEMD160 (C/CH/CHGEUER/Crypt-RIPEMD160-0.04.ta +r.gz) Module Crypt::RIPEMD160::MAC (C/CH/CHGEUER/Crypt-RIPEMD160-0. +04.tar.gz) Module Crypt::RSA (V/VI/VIPUL/Crypt-RSA-1.48.tar.gz) Module Crypt::RSA::DataFormat (V/VI/VIPUL/Crypt-RSA-1.48.tar. +gz) Module Crypt::RSA::Debug (V/VI/VIPUL/Crypt-RSA-1.48.tar.gz) Module Crypt::RSA::ES::OAEP (V/VI/VIPUL/Crypt-RSA-1.48.tar.gz +) Module Crypt::RSA::ES::PKCS1v15 (V/VI/VIPUL/Crypt-RSA-1.46.ta +r.gz) Module Crypt::RSA::Errorhandler (V/VI/VIPUL/Crypt-RSA-1.48.ta +r.gz) Module Crypt::RSA::Key (V/VI/VIPUL/Crypt-RSA-1.37.tar.gz) Module Crypt::RSA::Key::Private (V/VI/VIPUL/Crypt-RSA-1.48.ta +r.gz) Module Crypt::RSA::Key::Private::SSH (V/VI/VIPUL/Crypt-RSA-1. +48.tar.gz) Module Crypt::RSA::Key::Public (V/VI/VIPUL/Crypt-RSA-1.48.tar +.gz) Module Crypt::RSA::Key::Public::SSH (V/VI/VIPUL/Crypt-RSA-1.4 +8.tar.gz) Module Crypt::RSA::Primitives (V/VI/VIPUL/Crypt-RSA-1.48.tar. +gz) Module Crypt::RSA::SS::PKCS1v15 (V/VI/VIPUL/Crypt-RSA-1.48.ta +r.gz) Module Crypt::RSA::SS::PSS (V/VI/VIPUL/Crypt-RSA-1.48.tar.gz) Module Crypt::RandPasswd (J/JD/JDPORTER/Crypt-RandPasswd-0.02 +.tar.gz) Module Crypt::Random (V/VI/VIPUL/Crypt-Random-1.11.tar.gz) Module Crypt::Random::Generator (V/VI/VIPUL/Crypt-Random-1.11 +.tar.gz) Module Crypt::Random::Provider::File (V/VI/VIPUL/Crypt-Random +-1.11.tar.gz) Module Crypt::Random::Provider::devrandom (V/VI/VIPUL/Crypt-R +andom-1.11.tar.gz) Module Crypt::Random::Provider::devurandom (V/VI/VIPUL/Crypt- +Random-1.11.tar.gz) Module Crypt::Random::Provider::egd (V/VI/VIPUL/Crypt-Random- +1.11.tar.gz) Module Crypt::Random::Provider::rand (V/VI/VIPUL/Crypt-Random +-1.11.tar.gz) Module Crypt::Rijndael (D/DI/DIDO/Crypt-Rijndael-0.05.tar.gz) Module Crypt::Rijndael_PP (D/DE/DELTA/Crypt-Rijndael_PP-0.04. +tar.gz) Module Crypt::Rot13 (A/AY/AYRNIEU/Crypt-Rot13-0.04.tar.gz) Module Crypt::SKey (K/KW/KWILLIAMS/Crypt-SKey-0.03.tar.gz +) Module Crypt::SSLeay (C/CH/CHAMAS/Crypt-SSLeay-0.45.tar.gz) Module Crypt::SSLeay::CTX (C/CH/CHAMAS/Crypt-SSLeay-0.45.tar. +gz) Module Crypt::SSLeay::Conn (C/CH/CHAMAS/Crypt-SSLeay-0.45.tar +.gz) Module Crypt::SSLeay::Err (C/CH/CHAMAS/Crypt-SSLeay-0.45.tar. +gz) Module Crypt::SSLeay::MainContext (C/CH/CHAMAS/Crypt-SSLeay-0 +.45.tar.gz) Module Crypt::SSLeay::X509 (C/CH/CHAMAS/Crypt-SSLeay-0.45.tar +.gz) Module Crypt::Schnorr::AuthSign (Contact Author Ashish Gulhat +i <agul@cpan.org>) Module Crypt::Serpent (J/JH/JHUGHES/Crypt-Serpent-1.01.tar.g +z) Module Crypt::Simple (K/KA/KASEI/Crypt-Simple-0.04.tar.gz) Module Crypt::SmbHash (B/BJ/BJKUIT/Crypt-SmbHash-0.02.tar.gz +) Module Crypt::Solitaire (S/SI/SIFUKURT/Crypt-Solitaire-2.0.ta +r.gz) Module Crypt::TEA (A/AM/AMS/Crypt-TEA-1.25.tar.gz) Module Crypt::Tea (P/PJ/PJB/Crypt-Tea-1.36.tar.gz) Module Crypt::TripleDES (V/VI/VIPUL/Crypt-TripleDES-0.24.tar. +gz) Module Crypt::Twofish (A/AM/AMS/Crypt-Twofish-2.12.tar.gz) Module Crypt::Twofish2 (M/ML/MLEHMANN/Crypt-Twofish2-0.06.tar +.gz) Module Crypt::UnixCrypt (M/MV/MVORL/Crypt-UnixCrypt-1.0.tar.g +z) Module Crypt::Vigenere (A/AL/ALIZTA/Crypt-Vigenere-0.07.tar.g +z) Module Crypt::xDBM_File (E/EE/EESTABROO/Crypt-xDBM_File-0.80. +tar.gz)

    Yves / DeMerphq
    ---
    Software Engineering is Programming when you can't. -- E. W. Dijkstra (RIP)

Re: Standard encryption
by Abigail-II (Bishop) on Aug 09, 2002 at 12:09 UTC
    Quadruple rot13.

    Abigail
    --
    There isn't any standard encryption in Perl.

      That would be vulnerable to the "Man at both ends" attack wouldnt it?
        I think that would also be vulnerable to the "Wait, that's not encrypted!" attack.

        ~CubicSpline
        "No one tosses a Dwarf!"

Re: Standard encryption
by derby (Abbot) on Aug 09, 2002 at 15:43 UTC
    Unfortunately (or fortunately), there is no "standard" for encryption. rinceWind has given you the docs for the "standard" crypt function but that's not really encryption but a one way hash function. demerphq has given you a nice listing of the CPAN crypt modules. Looking at the state of encryption right now, PGP is the defacto standard and there are many implementations of it (PGP, OpenPGP, GnuPG, others?). You can check out <toot>my tutorial</toot> on GnuPG which has a nice overview of encryption (IMHO) and plenty of links to additional information.

    -derby

Re: Standard encryption
by Anonymous Monk on Aug 09, 2002 at 13:49 UTC
    If keeping the bad guys from getting your data is the primary concern then I suggest tricks like open STDOUT, ">/dev/null"; and looking up unlink.

    Decryption is left as an exercise for the reader or the NSA.