【发布时间】:2018-07-30 05:35:43
【问题描述】:
我正在使用 128 位密钥进行一些加密,这需要使用 16 字节数据块,我将其存储为 16 字节无符号字符数组。
unsigned char nonce_counter[16] = "xCv6Jk0neeV5GoSZ";
我经常需要将值视为一个数字来进行一些数学运算,但我似乎找不到一种安全的方法来对值进行类型转换。
如何将 16 字节的值转换为数值数据类型?
具体来说,我需要使用按位异或 A^B 并递增 A++。
我知道我可以做显而易见的事情并使用 for 循环并独立处理数组的每个元素,但我担心这样做会降低效率。
我的系统不支持__uint128_t。
【问题讨论】:
-
您忘记提问了吗?
-
@JacobG。我不小心在我打算之前提交并在我这样做后立即开始编辑,但感谢您的提醒。
-
如果您有一个兼容的 int128_t 并且数组中的字节顺序实际上与您的系统架构的字节序匹配,这是可能的。否则,您可能会发现迭代字节或一次可能两个或四个字节的速度一样快,具体取决于字节序。
-
假设您实际上有一个 16 字节的 int 值,但您会遇到字节序问题...
-
您的应用程序是否对这种效率水平敏感?您多久对此类号码执行一次此类处理?
标签: c arrays encryption casting type-conversion