mirror of https://github.com/djcb/mu.git
* mu-util: add mu_util_get_hash (refactored)
This commit is contained in:
parent
19a0c1c478
commit
1a14d19cad
|
@ -563,3 +563,27 @@ mu_util_read_password (const char *prompt)
|
|||
|
||||
return g_strdup (pass);
|
||||
}
|
||||
|
||||
|
||||
const char*
|
||||
mu_util_get_hash (const char* str)
|
||||
{
|
||||
unsigned djbhash, bkdrhash, bkdrseed;
|
||||
unsigned u;
|
||||
static char hex[18];
|
||||
|
||||
g_return_val_if_fail (str, NULL);
|
||||
|
||||
djbhash = 5381;
|
||||
bkdrhash = 0;
|
||||
bkdrseed = 1313;
|
||||
|
||||
for(u = 0; str[u]; ++u) {
|
||||
djbhash = ((djbhash << 5) + djbhash) + str[u];
|
||||
bkdrhash = bkdrhash * bkdrseed + str[u];
|
||||
}
|
||||
|
||||
snprintf (hex, sizeof(hex), "%08x%08x", djbhash, bkdrhash);
|
||||
|
||||
return hex;
|
||||
}
|
||||
|
|
|
@ -502,6 +502,20 @@ gboolean mu_util_g_set_error (GError **err, MuError errcode, const char *frm, ..
|
|||
G_GNUC_PRINTF(3,4);
|
||||
|
||||
|
||||
/**
|
||||
* calculate a 64-bit hash for the given string, based on a
|
||||
* combination of the DJB and BKDR hash functions
|
||||
*
|
||||
* @param a string
|
||||
*
|
||||
* @return the hash as a static string, which stays valid until this
|
||||
* function is called again.
|
||||
*/
|
||||
const char* mu_util_get_hash (const char* str);
|
||||
|
||||
|
||||
|
||||
|
||||
#define MU_COLOR_RED "\x1b[31m"
|
||||
#define MU_COLOR_GREEN "\x1b[32m"
|
||||
#define MU_COLOR_YELLOW "\x1b[33m"
|
||||
|
|
Loading…
Reference in New Issue