Я пытаюсь создать хэш SHA1 для пользовательского ввода и сохранить его в строковом значении, чтобы я мог сравнить его с текстовым файлом известных хэшей.
Чтобы создать хеш:
SHA1(password,strlen(password),temp);
print_hex(temp, sizeof(temp));
Преобразовать хеш:
for(i=0;i<sizeof(passHash);i++){
sprintf(&passHash[i], "%02x", temp[i]);
}
printf("%s\n", passHash);
Print_hex:
void print_hex(unsigned char *buf, int len){
int i;
for(i=0;i<len;i++){
printf("%02x",buf[i]);
}
printf("\n");
}
Когда я запускаю программу с известным хешированным паролем, таким как «пароль», он показывает правильный хеш с print_hex, но не после sprintf. Поэтому я знаю, что неправильно конвертирую хэш SHA1.
Что я делаю не так?