Я хочу сгенерировать хешированный пароль вручную с помощью openssl API в соответствии с wiki crypt, но результат программы не совпадает с результатом функции crypt, что-то не так?
int main() {
const char *salt = "123456";
const char *password = "123456";
unsigned char hashedPasswd[SHA512_DIGEST_LENGTH];
SHA512_CTX context;
if (!SHA512_Init(&context)) return -1;
if (!SHA512_Update(&context, (unsigned char *) salt, strlen(salt))) return -1;
if (!SHA512_Update(&context, (unsigned char *) password, strlen(password))) return -1;
if (!SHA512_Final(hashedPasswd, &context)) return -1;
std::string base64Data = base64_encode(hashedPasswd, sizeof(hashedPasswd));
printf("my result: %s\n", base64Data.c_str());
char *hashedPassword = crypt("123456", "$6$123456");
printf("crypt result: %s\n", hashedPassword);
return 0;
}
1005 * Мой результат: 1007 * PXeFkSq39sRSVXsSaxLWUUWDt45I8tw9mgcY8GE3B / r3VylOko0q727qPChy + uibqcFuCy6w67ruaQ3AyHHeDg == 1009 * Crypt Результат:
$ 6 $ 123456 $ 37mxvJGRzjWxgD3HYl.bKq4aUXrcYV8mk0pxmqg8ARv3t9ke5ZM / NBbwTkx1FDcnLhrOX3jQc6L / NKAohhQJn /
Часть хэширования совсем иная.