30 lines
551 B
C++
30 lines
551 B
C++
|
|
#define BCRYPT_HASHSIZE (64)
|
|
#define RANDBYTES (16)
|
|
#define COST (12)
|
|
|
|
void gen_random(char *s, const int len) {
|
|
|
|
static const char alphanum[] =
|
|
"0123456789"
|
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
"abcdefghijklmnopqrstuvwxyz";
|
|
|
|
for (int i = 0; i < len; ++i) {
|
|
s[i] = alphanum[rand() % (sizeof(alphanum) - 1)];
|
|
}
|
|
|
|
s[len] = 0;
|
|
}
|
|
|
|
const char * hathor_crypt(const char * password) {
|
|
|
|
char salt[BCRYPT_HASHSIZE];
|
|
char hash[BCRYPT_HASHSIZE];
|
|
gen_random(salt, COST);
|
|
sprintf(hash, "$5$%d$%s", COST, salt );
|
|
return crypt(password, hash);
|
|
|
|
}
|
|
|