org.apache.commons.codec.digest
Class Md5Crypt

java.lang.Object
  extended by org.apache.commons.codec.digest.Md5Crypt

public class Md5Crypt
extends Object

The libc crypt() "$1$" and Apache "$apr1$" MD5-based hash algorithm.

Based on the public domain ("beer-ware") C implementation from Poul-Henning Kamp which was found at: crypt-md5.c @ freebsd.org

Source:

 $FreeBSD: src/lib/libcrypt/crypt-md5.c,v 1.1 1999/01/21 13:50:09 brandon Exp $
 

Conversion to Kotlin and from there to Java in 2012.

The C style comments are from the original C code, the ones with "//" from the port.

This class is immutable and thread-safe.

Since:
1.7
Version:
$Id: Md5Crypt.html 889935 2013-12-11 05:05:13Z ggregory $

Constructor Summary
Md5Crypt()
           
 
Method Summary
static String apr1Crypt(byte[] keyBytes)
          See apr1Crypt(String, String) for details.
static String apr1Crypt(byte[] keyBytes, String salt)
          See apr1Crypt(String, String) for details.
static String apr1Crypt(String keyBytes)
          See apr1Crypt(String, String) for details.
static String apr1Crypt(String keyBytes, String salt)
          Generates an Apache htpasswd compatible "$apr1$" MD5 based hash value.
static String md5Crypt(byte[] keyBytes)
          Generates a libc6 crypt() compatible "$1$" hash value.
static String md5Crypt(byte[] keyBytes, String salt)
          Generates a libc crypt() compatible "$1$" MD5 based hash value.
static String md5Crypt(byte[] keyBytes, String salt, String prefix)
          Generates a libc6 crypt() "$1$" or Apache htpasswd "$apr1$" hash value.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Md5Crypt

public Md5Crypt()
Method Detail

apr1Crypt

public static String apr1Crypt(byte[] keyBytes)
See apr1Crypt(String, String) for details.

Throws:
RuntimeException - when a NoSuchAlgorithmException is caught. *

apr1Crypt

public static String apr1Crypt(byte[] keyBytes,
                               String salt)
See apr1Crypt(String, String) for details.

Throws:
IllegalArgumentException - if the salt does not match the allowed pattern
RuntimeException - when a NoSuchAlgorithmException is caught.

apr1Crypt

public static String apr1Crypt(String keyBytes)
See apr1Crypt(String, String) for details.

Throws:
RuntimeException - when a NoSuchAlgorithmException is caught.

apr1Crypt

public static String apr1Crypt(String keyBytes,
                               String salt)
Generates an Apache htpasswd compatible "$apr1$" MD5 based hash value.

The algorithm is identical to the crypt(3) "$1$" one but produces different outputs due to the different salt prefix.

Parameters:
keyBytes - plaintext string that should be hashed.
salt - salt string including the prefix and optionally garbage at the end. Will be generated randomly if null.
Returns:
computed hash value
Throws:
IllegalArgumentException - if the salt does not match the allowed pattern
RuntimeException - when a NoSuchAlgorithmException is caught.

md5Crypt

public static String md5Crypt(byte[] keyBytes)
Generates a libc6 crypt() compatible "$1$" hash value.

See Crypt.crypt(String, String) for details.

Throws:
RuntimeException - when a NoSuchAlgorithmException is caught.

md5Crypt

public static String md5Crypt(byte[] keyBytes,
                              String salt)
Generates a libc crypt() compatible "$1$" MD5 based hash value.

See Crypt.crypt(String, String) for details.

Parameters:
keyBytes - plaintext string that should be hashed.
salt - salt string including the prefix and optionally garbage at the end. Will be generated randomly if null.
Returns:
computed hash value
Throws:
IllegalArgumentException - if the salt does not match the allowed pattern
RuntimeException - when a NoSuchAlgorithmException is caught.

md5Crypt

public static String md5Crypt(byte[] keyBytes,
                              String salt,
                              String prefix)
Generates a libc6 crypt() "$1$" or Apache htpasswd "$apr1$" hash value.

See Crypt.crypt(String, String) or apr1Crypt(String, String) for details.

Throws:
IllegalArgumentException - if the salt does not match the allowed pattern
RuntimeException - when a NoSuchAlgorithmException is caught.


Copyright © 2002-2013 The Apache Software Foundation. All Rights Reserved.