Skip to content

Commit ff57a62

Browse files
committed
Use ThreadLocalRandom instead of Random and pull out its instantiation from the loop. Preallocate StringBuilder as well.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/codec/trunk@1814628 13f79535-47bb-0310-9956-ffa450edef68
1 parent cada569 commit ff57a62

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

  • src/main/java/org/apache/commons/codec/digest

src/main/java/org/apache/commons/codec/digest/B64.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package org.apache.commons.codec.digest;
1818

19-
import java.util.Random;
19+
import java.util.concurrent.ThreadLocalRandom;
2020

2121
/**
2222
* Base64 like method to convert binary bytes into ASCII chars.
@@ -65,14 +65,18 @@ static void b64from24bit(final byte b2, final byte b1, final byte b0, final int
6565

6666
/**
6767
* Generates a string of random chars from the B64T set.
68+
* <p>
69+
* The salt is generated with {@link ThreadLocalRandom}.
70+
* </p>
6871
*
6972
* @param num
7073
* Number of chars to generate.
7174
*/
7275
static String getRandomSalt(final int num) {
73-
final StringBuilder saltString = new StringBuilder();
76+
final StringBuilder saltString = new StringBuilder(num);
77+
final ThreadLocalRandom current = ThreadLocalRandom.current();
7478
for (int i = 1; i <= num; i++) {
75-
saltString.append(B64T.charAt(new Random().nextInt(B64T.length())));
79+
saltString.append(B64T.charAt(current.nextInt(B64T.length())));
7680
}
7781
return saltString.toString();
7882
}

0 commit comments

Comments
 (0)