出于我使用的库/子系统的目的,我必须将SHA1(使用例如opensll计算)转换为无符号长整数的5个元素数组(32位变量)或创建上述SHA1-5长数组我自己。
原因:
SHA1 (160 bits) = 5 x unsigned long int (32 bits)
我认为第一种解决方案会更好,所以这是我的问题:我应该如何解决这个问题?逐字节/位读取字节/字符,然后从中创建无符号长整数并将其放入数组中,还是有不同的解决方案?
答案 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]
。