Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将SHA1转换为无符号长整数的数组[5]?_C++_Arrays_Converter_Sha1_Unsigned Integer - Fatal编程技术网

C++ 如何将SHA1转换为无符号长整数的数组[5]?

C++ 如何将SHA1转换为无符号长整数的数组[5]?,c++,arrays,converter,sha1,unsigned-integer,C++,Arrays,Converter,Sha1,Unsigned Integer,为了使用库/子系统,我必须将SHA1(使用例如opensll计算)转换为无符号长整数(32位变量)的5元素数组,或者自己创建上述SHA1-5-long-array 原因: SHA1(160位)=5 x无符号长整数(32位) 我认为第一个解决方案会更好,所以我的问题是:我应该如何完成这项任务?逐字节/位读取字节/位,然后从中创建无符号长整数并将其放入数组中,或者是否有其他解决方案?SHA1生成一个20字节的哈希值。在openssl中,它返回一个无符号字符*。我猜您可以使用无符号字符[20]和uin

为了使用库/子系统,我必须将SHA1(使用例如opensll计算)转换为无符号长整数(32位变量)的5元素数组,或者自己创建上述SHA1-5-long-array

原因:

SHA1(160位)=5 x无符号长整数(32位)


我认为第一个解决方案会更好,所以我的问题是:我应该如何完成这项任务?逐字节/位读取字节/位,然后从中创建无符号长整数并将其放入数组中,或者是否有其他解决方案?

SHA1生成一个20字节的哈希值。在openssl中,它返回一个
无符号字符*
。我猜您可以使用
无符号字符[20]
uint32\u t[5]
并集
,并使用字符方便字节访问:

union mysha1{
    uint32_t shaint[5];
    unsigned char shachar[20];
};
再加上一堆操作符(比如索引),你就可以开始了


如果你想保持它的粗糙和简单,你可以在SHA1输出和你的uint32\t[5]之间做一个
memcpy

谢谢这对我有用:)也许其他人会想出竞争的解决方案。另一个解决方案是“重新解释投射”,但我很确定它会打破严格的别名。