这是我的计划:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
int main()
{
std::string hash = crypt("asd123","$2a$13$IP4FT4gf123I5bT6o4123123123123nbEXFqo.Oa123");
std::cout << hash;
}
运行此操作会导致错误
在抛出'std :: logic_error'的实例后终止调用 what():basic_string :: _ M_construct null无效 中止(核心倾销)
但如果我从盐中删除$,它运行正常。
答案 0 :(得分:4)
错误消息告诉您crypt
返回给定参数的nullpointer。很有可能是它发出信号失败的方式。你需要检查一下。
您可以通过(1)找到该功能的文档,以及(2)阅读它来了解有关crypt
的更多信息。
例如,您可以谷歌“unistd crypt”。
恰好,文档在一个漂亮的表中指定了你可以使用的有效字符集。