我希望比較存儲在u8 [32]中的SHA-256哈希(在內核空間中計算後)與用戶作爲字符串傳遞的64個字符串進行比較。如何將十六進制字符轉換爲4位二進制表示?
例如, :用戶將一個SHA-256哈希「49454bcda10e0dd4543cfa39da9615a19950570129420f956352a58780550839」作爲char *,這將需要64個字節。但是這必須與內核空間中的散列進行比較,該散列表示爲u8散列[32]。
int i;
u8 hash[32];
for(i=0; i<32; i++)
printk(KERN_CONT "%hhx ", hash[i]);
輸出:: 「49 45 4B CD A1 0E 0D D4 54 3C FA 39 DA 96 15 A1 99 50 57 01
內核內的散列被適當地通過下面的代碼印在ASCII 29 42 0f 95 63 52 a5 87 80 55 08 39「
由於完整散列存儲在32個字節中,並且打印爲每個u8空間2個字符組的64個字符,我假設當前一個u8塊存儲信息值2個字符,即00101111打印爲2f。
有沒有辦法在32字節中存儲64字節的字符串,以便它可以進行比較?
印刷,你可能想'%02x',而不是'%hhx'。 – fuz
@FUZxxl你說得對。我複製了OP的格式說明符。 – dasblinkenlight