如何将SHA1转换为无符号长整型数组[5]

How to convert SHA1 to array[5] of unsigned long ints?

本文关键字:数组 长整型 无符号 SHA1 转换      更新时间:2023-10-16

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

原因:

SHA1 (160 bits) = 5 x unsigned long int (32 bits)

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

SHA1生成一个20字节的哈希值。在openssl中,它返回一个unsigned char*。我猜你可以使用unsigned char[20]uint32_t[5]union,并使用这些字符来轻松访问字节:

union mysha1{
    uint32_t shaint[5];
    unsigned char shachar[20];
};

再加上一堆运算符(例如索引),你就可以开始了。

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