0
我有一個轉換字符串成MD5函數:Çsscanf的MD5到整數工作
if(snprintf(target, 7, "123456") == -1){
errx(1, "snprintf");
}
uint a[4];
char w[64] = {0};
strncpy(w, target, 56);
md5_prep(w);
md5_cpu((uint*)&w[0], &a[0], &a[1], &a[2], &a[3]);
printf("%llu %llu %llu %llu\n", a[0], a[1], a[2], a[3]);
這printf的給我:
970722017 2874784329 1474320062 1049104370
我知道這是正確的,因爲如果我把它轉換成HEX它是好的,如果不是密碼我有MD5哈希值,並嘗試做到這一點:
if(snprintf(g, 33, "e10adc3949ba59abbe56e057f20f883e") == -1){
errx(1, "snprintf");
}
uint a[4];
sscanf(&g[0], "%x", &a0]);
sscanf(&g[8], "%x", &a[1]);
sscanf(&g[16], "%x", &a[2]);
sscanf(&g[24], "%x", &a[3]);
printf("%llu %llu %llu %llu\n", a[0], a[1], a[2], a[3]);
結果是:
4294967295 4294967295 4061104190 4061104190
不應該兩個printfs都相等嗎?
我這個工具MD5通過的sscanf從這個線程詮釋轉換: Converting MD5 result into an integer in C
是的,你是對的,我手動解決了一些位轉移這個endian順序。 –