В настоящее время я работаю над приложением, которое использует библиотеку openssl (libcrypto) для создания сертификатов. Теперь я должен получить хэш уже существующего сертификата.Получите хэш сертификата x509 с библиотекой openssl
Когда я использую свой терминал, я могу генерировать хэш-значение с помощью
openssl x509 -hash -in cert.pem -noout
Выход: 01da0e2b
Это мой код, когда я пытаюсь т генерировать свой хэш-значение, с использованием библиотеки в С.
X509 *cert = NULL;
FILE *fp = fopen(currentCert.UTF8String, "r");
PEM_read_X509(fp, &cert, NULL, NULL);
long hash = X509_subject_name_hash(cert);
char *mdString = malloc(sizeof(long));
sprintf(mdString, "%lx",hash);
printf(mdString);
Выход: 1817886a
Но на самом деле мой выход отличается. Кто-нибудь знает, что я делаю неправильно?
просто используйте 'printf (« 0x% 08lx », hash)', не может понять, в чем причина сериализации его в char *, что также неверно, поскольку размер буфера должен зависеть от количества цифр – cmidi