gpt4 book ai didi

c - SSE2 SHA1 问题

转载 作者:行者123 更新时间:2023-11-30 16:38:10 24 4
gpt4 key购买 nike

我正在尝试用 C 语言实现 SHA1 和 SSE2 指令。初始化似乎有效,但如果我尝试

round1(testhashe, testhasha, testhashb, testhashc, testhashd, loadConstant(b[z]));

作为我的算法的第一轮,我遇到了错误。前面的常量和值被检查是正确的,但最后一个值将是错误的。我的宏是

#define rotthirty(val) (_mm_or_si128(_mm_slli_epi32(val,30),_mm_srli_epi32(val,2)))

#define f1(b,c,d) (_mm_xor_si128(d,_mm_and_si128(b, _mm_xor_si128(c, d))))

// Round functions
#define round1(A,B,C,D,E,w) \
temp = rotthirty(A);\
temp = _mm_add_epi32(temp,f1(B, C, D));\
temp = _mm_add_epi32(temp,k1);\
temp = _mm_add_epi32(temp,w);\
E = _mm_add_epi32(temp, E);\
B = rotthirty(B);\

在我更改为 SSE2 函数之前,这些工作没有问题,我只是将运算符更改为函数。我做错了什么?

此函数之后的输出来自内部函数和一次 4 sha 计算

Vector: 67452301 67452301 67452301 67452301
Vector: 7bf36ae2 7bf36ae2 7bf36ae2 7bf36ae2
Vector: 98badcfe 98badcfe 98badcfe 98badcfe
Vector: 10325476 10325476 10325476 10325476
Vector: 734fe2b5 724fe2b5 8b4ee2b5 8a4ee2b5

除最后一行外,其余行都包含正确的值,如在第一轮后执行 SSE2 免费工作代码中所示

67452301
7bf36ae2
98badcfe
10325476
122fa21

最佳答案

它必须是 A 的 rot 5,而不是 rot 30。而且,如果其他人面临这个问题,我想解决@jww 的答案,因为这似乎是我有时听到的一个误解。如果您仅使用 SSE2 内在函数,则无法使用提到的 SHA 函数,因为这些函数不属于此函数。您不必通过将值加载到 vector 中来交换字节模式,这可以保持如上所示

关于c - SSE2 SHA1 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47600978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com