【发布时间】:2016-01-16 14:14:25
【问题描述】:
有人告诉我要使用 Siphash 密钥
24 64 6d 71 33 45 30 31 63 2f 6d 69 37 33 9d 19
我正在尝试使用来自OpenBSD 的 SipHash24_Init。
我有以下全局:
const SIPHASH_KEY COMP_SIPHASH_KEY = 0x24646d7133453031632f6d6937339d19;
并且是这样使用的:
SIPHASH_CTX ctx;
SipHash24_Init(&ctx, &COMP_SIPHASH_KEY);
我会发布更多,但它很复杂,我认为它不相关
但是我在定义/声明中得到以下编译器错误:
error: integer constant is too large for its type
error: invalid initializer
【问题讨论】:
-
我们不知道您使用的是哪个库包含这些类型或函数。
-
OpenBSD 中的 SipHash24 - 我的错 openbsd.org/cgi-bin/man.cgi?query=SipHash24
-
您需要使用 16 字节的数组或两个 64 位整数之一。大概是前者。在 C 的大多数实现中没有 128 位整数类型。像
byte key[] = {0x24, 0x64, 0x6d, ... }这样的东西。或者,您可以将其存储为十六进制字符串,并使用Hexadecimal String to Byte Array in C 的答案之一将其转换为原始字节。 -
@MaartenBodewes 问题是在不了解库的情况下只能发表一些想法,而不是不知道哪个答案实际上是正确的。
标签: c hash cryptography