Как сделать хешированный пароль, как это делает функция crypt? - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу сгенерировать хешированный пароль вручную с помощью 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 /

Часть хэширования совсем иная.

...