我正在开发需要在不同服务器上分发文件的项目。对于分配方案,我选择使用SHA1算法并取最后64位(160位散列)来识别文件。
我不确定这是不是我的错,但是我无法将int作为最后64位哈希值的稳定值。
我试过的是:
char *plaintext = "file";
size_t len = strlen(plaintext);
char hash[41];
/*hash contains the hash of the file as char* */
plaintext_to_sha1(hash, plaintext, len);
/*get last 64 bits of the hash*/
uint64_t value = (uint64_t)(hash + (24 * sizeof(char)));
printk(LOG_LEVEL "value: %llu\n", value);
value
包含的值有时会有所不同,我不明白我做错了什么。我将最后的64位转换为int,向右移动24个字节的散列。
任何建议都表示赞赏。
答案 0 :(得分:0)
使用以下内容:
memcpy(&value,hash+12,8);
答案 1 :(得分:0)