mirror of https://github.com/mirror/busybox.git
trivial crypt shrinkage
function old new delta __md5_to64 27 29 +2 pw_encrypt 3631 3608 -231_11_stable
parent
aa9cd89c67
commit
76f812803b
|
@ -673,8 +673,6 @@ des_crypt(struct des_ctx *ctx, char output[21], const unsigned char *key, const
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
// des_setkey never fails
|
|
||||||
|
|
||||||
#undef C
|
#undef C
|
||||||
#undef init_perm
|
#undef init_perm
|
||||||
#undef final_perm
|
#undef final_perm
|
||||||
|
|
|
@ -501,13 +501,14 @@ static void __md5_Transform(uint32_t state[4], const unsigned char block[64])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static char*
|
||||||
__md5_to64(char *s, unsigned long v, int n)
|
__md5_to64(char *s, unsigned v, int n)
|
||||||
{
|
{
|
||||||
while (--n >= 0) {
|
while (--n >= 0) {
|
||||||
*s++ = ascii64[v & 0x3f];
|
*s++ = ascii64[v & 0x3f];
|
||||||
v >>= 6;
|
v >>= 6;
|
||||||
}
|
}
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -515,7 +516,7 @@ __md5_to64(char *s, unsigned long v, int n)
|
||||||
*
|
*
|
||||||
* Use MD5 for what it is best at...
|
* Use MD5 for what it is best at...
|
||||||
*/
|
*/
|
||||||
#define MD5_OUT_BUFSIZE 120
|
#define MD5_OUT_BUFSIZE 36
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
md5_crypt(char passwd[120], const unsigned char *pw, const unsigned char *salt)
|
md5_crypt(char passwd[120], const unsigned char *pw, const unsigned char *salt)
|
||||||
|
@ -578,7 +579,6 @@ md5_crypt(char passwd[120], const unsigned char *pw, const unsigned char *salt)
|
||||||
passwd[2] = '$';
|
passwd[2] = '$';
|
||||||
strncpy(passwd + 3, (char*)sp, sl);
|
strncpy(passwd + 3, (char*)sp, sl);
|
||||||
passwd[sl + 3] = '$';
|
passwd[sl + 3] = '$';
|
||||||
passwd[sl + 4] = '\0';
|
|
||||||
|
|
||||||
__md5_Final(final, &ctx);
|
__md5_Final(final, &ctx);
|
||||||
|
|
||||||
|
@ -607,15 +607,16 @@ md5_crypt(char passwd[120], const unsigned char *pw, const unsigned char *salt)
|
||||||
__md5_Final(final, &ctx1);
|
__md5_Final(final, &ctx1);
|
||||||
}
|
}
|
||||||
|
|
||||||
p = passwd + sl + 4; /*strlen(passwd);*/
|
p = passwd + sl + 4; /* 12 bytes max (sl is up to 8 bytes) */
|
||||||
|
|
||||||
|
/* Add 5*4+2 = 22 bytes of hash, + NUL byte. */
|
||||||
final[16] = final[5];
|
final[16] = final[5];
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
l = (final[i] << 16) | (final[i+6] << 8) | final[i+12];
|
l = (final[i] << 16) | (final[i+6] << 8) | final[i+12];
|
||||||
__md5_to64(p, l, 4); p += 4;
|
p = __md5_to64(p, l, 4);
|
||||||
}
|
}
|
||||||
l = final[11];
|
l = final[11];
|
||||||
__md5_to64(p, l, 2); p += 2;
|
p = __md5_to64(p, l, 2);
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
/* Don't leave anything around in vm they could use. */
|
/* Don't leave anything around in vm they could use. */
|
||||||
|
|
Loading…
Reference in New Issue