是否可以将sh1令牌的长度限制为小于10?

时间:2017-07-01 09:34:44

标签: java

如何将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

1 个答案:

答案 0 :(得分:-1)

SHA1产生160位数据,即20字节。如果您将其表示为HEX,则需要40个字符。

它全部在编码中。您可能能够找到一些需要少于40个字符的编码。

请检查:What is the most efficient binary to text encoding?