Put MD5 salt at the end for security.
This commit is contained in:
parent
90aebf7f52
commit
44f18333b7
@ -10,7 +10,7 @@
|
||||
*
|
||||
* Sverre H. Huseby <sverrehu@online.no>
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/libpq/md5.c,v 1.6 2001/09/21 20:31:47 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/libpq/md5.c,v 1.7 2001/09/27 23:16:23 momjian Exp $
|
||||
*/
|
||||
|
||||
#include "postgres.h"
|
||||
@ -19,6 +19,14 @@
|
||||
|
||||
#include "libpq/crypt.h"
|
||||
|
||||
#ifdef FRONTEND
|
||||
#undef palloc
|
||||
#define palloc malloc
|
||||
#undef pfree
|
||||
#define pfree free
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* PRIVATE FUNCTIONS
|
||||
*/
|
||||
@ -289,15 +297,19 @@ md5_hash(const void *buff, size_t len, char *hexsum)
|
||||
bool EncryptMD5(const char *passwd, const char *salt, size_t salt_len,
|
||||
char *buf)
|
||||
{
|
||||
char crypt_buf[128];
|
||||
|
||||
if (salt_len + strlen(passwd) > 127)
|
||||
return false;
|
||||
|
||||
char *crypt_buf = palloc(strlen(passwd) + salt_len);
|
||||
bool ret;
|
||||
|
||||
strcpy(buf, "md5");
|
||||
memset(crypt_buf, 0, 128);
|
||||
memcpy(crypt_buf, salt, salt_len);
|
||||
memcpy(crypt_buf+salt_len, passwd, strlen(passwd));
|
||||
/*
|
||||
* Place salt at the end because it may be known by users
|
||||
* trying to crack the MD5 output.
|
||||
*/
|
||||
strcpy(crypt_buf, passwd);
|
||||
memcpy(crypt_buf+strlen(passwd), salt, salt_len);
|
||||
|
||||
return md5_hash(crypt_buf, salt_len + strlen(passwd), buf + 3);
|
||||
ret = md5_hash(crypt_buf, strlen(passwd) + salt_len, buf + 3);
|
||||
pfree(crypt_buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user