The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Crypt::Password::Util - Crypt password utilities


This document describes version 0.10 of Crypt::Password::Util (from Perl distribution Crypt-Password-Util), released on 2015-01-25.


 use Crypt::Password::Util qw(crypt_type looks_like_crypt crypt);

 say crypt_type('62F4a6/89.12z');                    # CRYPT
 say crypt_type('$1$$...');                          # MD5-CRYPT
 say crypt_type('$apr1$4DdvgCFk$...');               # MD5-CRYPT
 say crypt_type('$5$4DdvgCFk$...');                  # SSHA256
 say crypt_type('$6$4DdvgCFk$...');                  # SSHA512
 say crypt_type('1a1dc91c907325c69271ddf0c944bc72'); # PLAIN-MD5
 say crypt_type('foo');                              # undef

 say looks_like_crypt('62F4a6/89.12z');   # 1
 say looks_like_crypt('foo');             # 0

 say crypt('pass'); # automatically choose the appropriate type and salt


crypt_type($str) => STR

Return crypt type, or undef if $str does not look like a crypted password. Currently known types:


    Passphrase scheme based on Blowfish, designed by Niels Provos and David Mazieres for OpenBSD.

    Recognized by: $2$ or $2a$header followed by 22 base64-digits salt and 31 digits hash.


    Traditional DES crypt.

    Recognized by: 11 digit base64 characters.


    A baroque passphrase scheme based on MD5, designed by Poul-Henning Kamp and originally implemented in FreeBSD.

    Recognized by: $1$ or $apr1$ header.


    Unsalted MD5 hash, popular with PHP web applications.

    Recognized by: 32 digits of hex characters.

  • SSHA256

    Salted SHA256, supported by glibc 2.7+.

    Recognized by: $5$ header.

  • SSHA512

    Salted SHA512, supported by glibc 2.7+.

    Recognized by: $6$ header.

looks_like_crypt($str) => BOOL

Return true if $str looks like a crypted password.

crypt($str) => STR

Like Perl's crypt(), but automatically choose the appropriate crypt type and random salt. Will first choose SSHA512 with 64-bit random salt. If not supported by system, fall back to MD5-CRYPT with 32-bit random salt. If that is not supported, fall back to CRYPT.


Authen::Passphrase which recognizes more encodings (but currently not SSHA256 and SSHA512).


Please visit the project's homepage at


Source repository is at


Please report any bugs or feature requests on the bugtracker website

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.


perlancar <>


This software is copyright (c) 2015 by

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.