В вашем коде у вас есть
SHA1(argv[1], strlen(argv[1]), obuf);
base64_encode(obuf,strlen(obuf),b64,100);
strlen(obuf)
неверно, поскольку obuf
содержит необработанные двоичные данные, которые не имеют нулевого терминатора, поэтому он сообщит неверную длину base64_encode
.
Поскольку SHA-1 создает дайджест из 20 байтов (размером как obuf
), вам придется перейти на base64_encode
этот размер:
base64_encode(obuf,20,b64,100);
/* or (may be better if you later decide to change hashing algorithm) */
base64_encode(obuf,sizeof(obuf),b64,100);