计算矩阵的哈希值

时间:2019-03-05 10:32:54

标签: cryptography

作为我最后一年项目的一部分,我正在SHA-3上测试Bouncycastle库。 我发现了用于计算字符串的哈希值的源代码:

String input = "hello" ;
    SHA3.DigestSHA3 digestSHA3 = new SHA3.Digest256();   
    byte[] digest = digestSHA3.digest(input.getBytes());   
    System.out.println("SHA3-256 = " + Hex.toHexString(digest));

但是我想计算矩阵的哈希值,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您需要将矩阵唯一地转换为字节数组。可能的解决方案之一:

private static byte[] intToBytes(int value) {
    return new byte[] {
        (byte)(value >>> 24),
        (byte)(value >>> 16),
        (byte)(value >>> 8),
        (byte)value
    };
}

public static void main(String[] args) throws Exception {
    int[][] matrix = new int[3][5];

    SHA3.DigestSHA3 sha3 = new SHA3.Digest256();
    int height = matrix.length;
    int width = matrix[0].length;
    sha3.update(intToBytes(height)); // add height of the matrix
    sha3.update(intToBytes(width));  // add width
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
            sha3.update(intToBytes(matrix[i][j])); // add all values
        }
    }

    byte[] digest = digest.digest();
}