in src/main/java/com/aliyun/credentials/utils/ParameterHelper.java [26:59]
public static String getUniqueNonce() {
// thread id
long threadId = Thread.currentThread().getId();
// timestamp: ms
long currentTime = System.currentTimeMillis();
// sequence number
ThreadLocalRandom random = ThreadLocalRandom.current();
long seq = seqId.getAndIncrement();
long rand = random.nextLong();
StringBuffer sb = new StringBuffer();
sb.append(processStartTime).append('-')
.append(threadId).append('-')
.append(currentTime).append('-')
.append(seq).append('-')
.append(rand);
try {
// hash
MessageDigest digest = MessageDigest.getInstance("MD5");
// hex
byte[] msg = sb.toString().getBytes();
sb.setLength(0);
for (byte b : digest.digest(msg)) {
String hex = Integer.toHexString(b & 0xFF);
if (hex.length() < 2) {
sb.append(0);
}
sb.append(hex);
}
} catch (NoSuchAlgorithmException e) {
throw new CredentialException(e.getMessage(), e);
}
return sb.toString();
}