最近在开发中遇到了一个需求,要求打印一个单据,并且需要有一个16位长度的数字码,要求数字码不能重复,且重复打印生成的单据数字码相同
大家有需要可以参考下面的代码
public static String getMD5(String sourceStr) {
byte[] source = sourceStr.getBytes(StandardCharsets.UTF_8);
String s = null;
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
try
{
MessageDigest md = MessageDigest.getInstance( "MD5" );
md.update( source );
byte tmp[] = md.digest();
char str[] = new char[16];
//这里字符数组的长度要改成你需要的和下面i的最大值保持一致
int k = 0;
for (int i = 0; i < 16; i++) {
byte byte0 = tmp[i];
//只取高位
str[k++] = hexDigits[(byte0 >>> 4 & 0xf)%10];
// str[k++] = hexDigits[byte0 & 0xf];
}
s = new String(str); // 换后的结果转换为字符串
}catch( Exception e )
{
e.printStackTrace();
}
return s;
}