Function 我想找到一个哈希函数来生成给定长度的哈希

Function 我想找到一个哈希函数来生成给定长度的哈希,function,hash,Function,Hash,就像标题一样,我想找到一个哈希函数来生成给定长度的哈希。从互联网上我发现一个解决方案是我可以使用SHAKE256技术。但是我找不到一些java代码来使用SHAKE256。任何人都可以向我提供一些java代码示例,以便我在代码中使用它?我在Google中键入了JavaShake256,并发现此解决方案作为第二个结果:。它是一个名为“keccakj”的Java库,能够计算shake256散列等。对于shake256,要生成任意位长d和d

就像标题一样,我想找到一个哈希函数来生成给定长度的哈希。从互联网上我发现一个解决方案是我可以使用SHAKE256技术。但是我找不到一些java代码来使用SHAKE256。任何人都可以向我提供一些java代码示例,以便我在代码中使用它?

我在Google中键入了
JavaShake256
,并发现此解决方案作为第二个结果:。它是一个名为“keccakj”的Java库,能够计算shake256散列等。

对于shake256,要生成任意位长
d
d
<256的散列,只需从中修剪
SHAKEDigest
的结果

公共静态字节[]散列(字节[]src,int byteLength){
//导入org.bouncycastle.crypto.digests.SHAKEDigest;

Assert.assertTrue(“不支持结果长度超过32”,通过Tellength,我也找到了那个资源,但在它里面我没有找到任何将outout长度作为参数的方法,你能检查一下吗?看起来自述文件中有一个例子,其中包括一个名为
的变量,不管你喜欢什么大小。
。听起来这应该是你想要的吗?
    public static byte[] hash(byte[] src, int byteLength){
        //import org.bouncycastle.crypto.digests.SHAKEDigest;
        Assert.assertTrue("do not support result length more than 32", byteLength<=32);
        SHAKEDigest d = new SHAKEDigest(256);
        byte[]checksumByte = new byte[32];
        d.update(src,0,src.length);
        d.doFinal(checksumByte,0);
        return Arrays.copyOf(checksumByte,byteLength);
    }