Java:在一个函数中将字符串数组作为Merkle树散列

时间:2019-06-16 03:08:21

标签: java loops for-loop hash merkle-tree

我想将字符串数组哈希为一个哈希,如下图所示。但是我不想实现一些基于类的merkle树。这只是一个简单的功能。这是一个好的实现还是有任何可能的改进?

enter image description here

public static String hashStrings(@NotNull String [] strs)
{
    if (strs.length == 1) return hashString(strs[0]);

    List<String> hashes = new ArrayList<>();

    for (int i = 0; i < strs.length; i++)
    {
        hashes.add(hashString(strs[i]));
    }

    int currentSize, nextSize;

    while(hashes.size() > 1)
    {
        currentSize = hashes.size();
        nextSize = currentSize % 2 == 0 ? currentSize / 2 : (currentSize + 1) / 2;

        for (int i = 0; i < currentSize - 1; i += 2)
        {
            hashes.set(i / 2, hashString(hashes.get(i) + hashes.get(i + 1)));
        }

        if (currentSize % 2 == 1)
        {
            hashes.set(nextSize - 1, hashString(hashes.get(currentSize - 1)));
        }

        hashes = hashes.subList(0, nextSize);
    }

    return hashes.get(0);
}

0 个答案:

没有答案