Author: ggregory
Date: Thu Nov  9 00:55:40 2017
New Revision: 1814679

URL: http://svn.apache.org/viewvc?rev=1814679&view=rev
Log:
Use ThreadLocalRandom instead of Random and update Javadocs for all public APIs 
in this UnixCrypt.

Modified:
    
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java

Modified: 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java?rev=1814679&r1=1814678&r2=1814679&view=diff
==============================================================================
--- 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java
 (original)
+++ 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/UnixCrypt.java
 Thu Nov  9 00:55:40 2017
@@ -16,7 +16,8 @@
  */
 package org.apache.commons.codec.digest;
 
-import java.util.Random;
+import java.security.SecureRandom;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.commons.codec.Charsets;
 
@@ -172,7 +173,9 @@ public class UnixCrypt {
     /**
      * Generates a crypt(3) compatible hash using the DES algorithm.
      * <p>
-     * As no salt is given, a random one will be used.
+     * A salt is generated for you using {@link ThreadLocalRandom}; for more 
secure salts consider using
+     * {@link SecureRandom} to generate your own salts and calling {@link 
#crypt(byte[], String)}.
+     * </p>
      *
      * @param original
      *            plaintext password
@@ -186,18 +189,21 @@ public class UnixCrypt {
      * Generates a crypt(3) compatible hash using the DES algorithm.
      * <p>
      * Using unspecified characters as salt results incompatible hash values.
-     *
+     * </p>
+     * 
      * @param original
      *            plaintext password
      * @param salt
-     *            a two character string drawn from [a-zA-Z0-9./] or null for 
a random one
+     *            a two character string drawn from [a-zA-Z0-9./]. The salt 
may be null, in which case a salt is
+     *            generated for you using {@link ThreadLocalRandom}; for more 
secure salts consider using
+     *            {@link SecureRandom} to generate your own salts.
      * @return a 13 character string starting with the salt string
      * @throws IllegalArgumentException
      *             if the salt does not match the allowed pattern
      */
     public static String crypt(final byte[] original, String salt) {
         if (salt == null) {
-            final Random randomGenerator = new Random();
+            final ThreadLocalRandom randomGenerator = 
ThreadLocalRandom.current();
             final int numSaltChars = SALT_CHARS.length;
             salt = "" + SALT_CHARS[randomGenerator.nextInt(numSaltChars)] +
                     SALT_CHARS[randomGenerator.nextInt(numSaltChars)];
@@ -253,7 +259,9 @@ public class UnixCrypt {
     /**
      * Generates a crypt(3) compatible hash using the DES algorithm.
      * <p>
-     * As no salt is given, a random one is used.
+     * A salt is generated for you using {@link ThreadLocalRandom}; for more 
secure salts consider using
+     * {@link SecureRandom} to generate your own salts and calling {@link 
#crypt(String, String)}.
+     * </p>
      *
      * @param original
      *            plaintext password
@@ -269,7 +277,9 @@ public class UnixCrypt {
      * @param original
      *            plaintext password
      * @param salt
-     *            a two character string drawn from [a-zA-Z0-9./] or null for 
a random one
+     *            a two character string drawn from [a-zA-Z0-9./]. The salt 
may be null, in which case a salt is
+     *            generated for you using {@link ThreadLocalRandom}; for more 
secure salts consider using
+     *            {@link SecureRandom} to generate your own salts.
      * @return a 13 character string starting with the salt string
      * @throws IllegalArgumentException
      *             if the salt does not match the allowed pattern


Reply via email to