为了我使用的库/子系统的目的,我必须将SHA1 (使用opensll计算)转换为5个无符号长ints元素数组(32位变量),或者自己创建前面提到的SHA1-5长数组。
原因:
SHA1 (160 bits) = 5 x unsigned long int (32 bits)
我认为第一个解决方案会更好,所以我的问题是:我应该如何完成这项任务?逐位读取字节/位,然后从它创建无符号的长it,并将其放入数组中,还是有不同的解决方案?
发布于 2015-02-05 10:11:30
SHA1产生一个20字节的散列值.在openssl中,它返回一个unsigned char*。我猜您可以使用union of unsigned char[20]和uint32_t[5],并使用字符进行简单的字节访问:
union mysha1{
uint32_t shaint[5];
unsigned char shachar[20];
};再加上一堆操作符(例如索引),你就很适合了。
但是,如果您想保持简单简练,那么可以在memcpy输出和uint32_t[5]之间做一个uint32_t[5]。
https://stackoverflow.com/questions/28340991
复制相似问题