Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以将sh1令牌的长度限制在10以内?_Java - Fatal编程技术网

Java 是否可以将sh1令牌的长度限制在10以内?

Java 是否可以将sh1令牌的长度限制在10以内?,java,Java,如何将sh1哈希的长度减少到10位以下?可能吗 我尝试了以下代码 /** * * @param id * @return */ public static final String getGeneratedId(final String id) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new Objec

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

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

这一切都在编码中。您可能会找到一些需要少于40个字符的编码


检查此项:

getGeneratedId(“foobar”)。子字符串(0,10)
——非常简单。当然,这样做会增加冲突的可能性。在不创建
UUID
的情况下,谈论
UUID
也是一种误导。而且不应该使用Java序列化将字符串转换为字节数组。只需使用string.getBytes(StandardCharsets.UTF8)。@Erwin Bolwidt:Substring。。非常错误的事情。那我怎么才能从那个令牌中夺回我给予的绳子呢。那不是我mean@PRASANTHMV根据定义,加密哈希不允许从哈希中获取原始文本。这就是散列的全部原理。不管你是否使用它的子串,都不会改变任何事情。