如何将sh1哈希的长度减少到10位以下?有可能吗?
我尝试使用以下代码
/**
*
* @param id
* @return
*/
public static final String getGeneratedId(final String id) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(id);
oos.close();
MessageDigest m = MessageDigest.getInstance("SHA1");
m.update(baos.toByteArray());
return new BigInteger(1, m.digest()).toString(16);
} catch (Exception e) {
ICAMPPLogger.logException(CLASSNAME, "error in creating uuid" + e);
ICAMPPUtils.getStackTraceToString(e);
return BigInteger.ZERO.toString();
}
}
public static void main(String[] args) {
String token = getGeneratedId("testing");
System.out.println(token);
}
ouput is : 1305340859400297508806692338645894167742475232778
But i would like to limit length to less than 10 . is it posssible
答案 0 :(得分:-1)
SHA1产生160位数据,即20字节。如果您将其表示为HEX,则需要40个字符。
它全部在编码中。您可能能够找到一些需要少于40个字符的编码。