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

时间:2015-02-05 09:59:03

标签: c++ arrays converter sha1 unsigned-integer

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

原因:

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

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

1 个答案:

答案 0 :(得分:2)

SHA1产生一个20字节的哈希值。在openssl中,它返回unsigned char*。我猜你可以使用union unsigned char[20]uint32_t[5]并使用字符进行简单的字节访问:

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

添加一堆运算符(例如索引),你很高兴。

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