|
|
ru.nethack- RU.NETHACK ------------------------------------------------------------------- From : Eugene Grosbein 2:5006/1 09 Jan 2003 19:28:23 To : 3APA3A Subject : Re: Remote Administrator server --------------------------------------------------------------------------------
3> По поводу стойкости pw_getrand - не знаю, не видел реализации.
#ifndef lint
static const char rcsid[] =
"$FreeBSD: src/usr.sbin/pw/pw_user.c,v 1.34.2.12 2002/08/11 14:27:31 dwmalone
Exp $";
#endif /* not lint */
[skip]
#if defined(USE_MD5RAND)
u_char *
pw_getrand(u_char *buf, int len) /* cryptographically secure rng */
{
int i;
for (i=0;i<len;i+=16) {
u_char ubuf[16];
MD5_CTX md5_ctx;
struct timeval tv, tvo;
struct rusage ru;
int n=0;
int t;
MD5Init (&md5_ctx);
t=getpid();
MD5Update (&md5_ctx, (u_char*)&t, sizeof t);
t=getppid();
MD5Update (&md5_ctx, (u_char*)&t, sizeof t);
gettimeofday (&tvo, NULL);
do {
getrusage (RUSAGE_SELF, &ru);
MD5Update (&md5_ctx, (u_char*)&ru, sizeof ru);
gettimeofday (&tv, NULL);
MD5Update (&md5_ctx, (u_char*)&tv, sizeof tv);
} while (n++<20 || tv.tv_usec-tvo.tv_usec<100*1000);
MD5Final (ubuf, &md5_ctx);
memcpy(buf+i, ubuf, MIN(16, len-i));
}
return buf;
}
Eugene
--
"Люди забыли эту истину," - сказал Лис, - "но ты не забывай"
--- slrn/0.9.7.4 (FreeBSD)
* Origin: Svyaz Service JSC (2:5006/1@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.nethack/260937add4013.html, оценка из 5, голосов 10
|