因为128位密钥太长所以想着缩短长度,目前缩小到64位,如果有那位同学有缩减到32位的方法请留言沟通谢谢!
public static void main(String args[]) {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String secretKey = createSecretKey(uuid,"hk12@zd");
System.out.println("secretKey:" + secretKey);
}
/**
* SHA-512加密
* @param key
* @param salt
* @return
*/
public static String createSecretKey(String key, String salt){
try{
MessageDigest digest = DigestUtils.getSha512Digest();
digest.update(salt.getBytes("UTF-8"));
byte[] secretKey = digest.digest(key.getBytes("UTF-8"));
return byteHex(secretKey,32);// 8 10 16 32 进制 java最大密钥128位 8&10&16都是128位 32是64位
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* byte转换字符串
* @param data
* @param radix
* @return
*/
private static String byteHex(byte[] data, int radix){
StringBuilder buf = new StringBuilder();
for(int i=0; i< data.length ;i++){
buf.append(Integer.toString((data[i] & 0xff) + 0x100, radix).substring(1));
}
return buf.toString();
}