如何在 Java 中表示 uint8 文字

How do I represent uint8 literals in Java

我正在尝试重新实现一些在 Java 中使用 libsodium 的代码。 原始代码声明了一个 uint8 类型的数组:

#define SECRET ((uint8_t[]){ 0xAA, 0xBB, 0xCC ... }) // not the real secret!

并将其提供给 libsodium 的 crypto_hash_sha256_update

我在 Java 中实现它的挑战是 Java 没有无符号字节,所以我实际上不能将 0xAA 键入一个字节。

我尝试过的事情:

编辑 这是我的短暂尝试

    final short[] salt = { 0xAA, 0xBB, ...};


    final Hasher hasher = Hashing.sha256().newHasher();
    hasher.putLong(input);
    for (int i=0; i < salt.length; i++) {
        hasher.putShort(salt[i]);
    }
    return hasher.hash().asBytes();

看起来我的原始代码有效

final short[] salt = { 0xAA, 0xBB, ...};


final Hasher hasher = Hashing.sha256().newHasher();
hasher.putLong(input);
for (int i=0; i < salt.length; i++) {
    hasher.putShort(salt[i]);
}
return hasher.hash().asBytes();

问题是我忘记在比较之前左填充我的结果