我正在尝试重新实现一些在Java中使用libsodium的代码。 原始代码声明了一个类型为uint8的数组:
#define SECRET ((uint8_t[]){ 0xAA, 0xBB, 0xCC ... }) // not the real secret!
并将其提供给libsodium' crypto_hash_sha256_update
我在Java中实现这一点的挑战是Java没有无符号字节,所以我实际上不能将0xAA
键入为字节。
我尝试的事情:
0b11110000...
格式,这并没有给出正确答案(我从原始实现中获得了一些测试数据)char []
数组并连接文字:final char [] salt = {0xAABB,0xCCDD,...}`,并没有给出正确的答案EDIT 这是我的短暂尝试
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();
答案 0 :(得分:0)
看起来我的原始代码有效
Object(std::unique_ptr<T>&& v) : value(static_cast<std::unique_ptr<T>*>(std::move(&v))) {}
问题是我在比较之前忘记了左边的结果