diff --git a/src/main/java/org/apache/commons/codec/digest/B64.java b/src/main/java/org/apache/commons/codec/digest/B64.java
index f91112e..4396ecc 100644
--- a/src/main/java/org/apache/commons/codec/digest/B64.java
+++ b/src/main/java/org/apache/commons/codec/digest/B64.java
@@ -75,16 +75,11 @@
    * @return a random salt {@link String}.
    */
   static String getRandomSalt(final int num) {
-    final StringBuilder saltString = new StringBuilder(num);
     try {
-      final SecureRandom current = SecureRandom.getInstance("SHA1PRNG");
-      for (int i = 1; i <= num; i++) {
-        saltString.append(B64T.charAt(current.nextInt(B64T.length())));
-      }
+      return getRandomSalt(num, SecureRandom.getInstanceStrong());
     } catch (NoSuchAlgorithmException e) {
-      throw new RuntimeException(e);
+      throw new IllegalStateException(e);
     }
-    return saltString.toString();
   }
 
     /**
@@ -98,10 +93,10 @@
      * @return a random salt {@link String}.
      */
     static String getRandomSalt(final int num, final Random random) {
-        final StringBuilder saltString = new StringBuilder(num);
-        for (int i = 1; i <= num; i++) {
-            saltString.append(B64T.charAt(random.nextInt(B64T.length())));
-        }
-        return saltString.toString();
+      final StringBuilder saltString = new StringBuilder(num);
+      for (int i = 1; i <= num; i++) {
+        saltString.append(B64T.charAt(random.nextInt(B64T.length())));
+      }
+      return saltString.toString();
     }
 }
