⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include "xmail.h"MINT *x, *b, *one, *c64, *t45, *z, *q, *r, *two, *t15;MINT *a[42];setup(s) char *s;{	int pf[2];	strncpy(buf, s, 10);	while(*s) *s++ = 0;	pipe(pf);	if(fork()==0)	{		close(0);		close(1);		dup(pf[0]);		dup(pf[1]);		execl("/usr/lib/makekey", "-", 0);		execl("/lib/makekey", "-", 0);		exit(1);	}	write(pf[1], buf, 10);	wait((int *)NULL);	if(read(pf[0], buf, 13) != 13)	{	fprintf(stderr, "enroll: cannot generate key\n");		exit(1);	}}mkx(){	int i, j;	for(i=0; i<4; i++)	{	mult(x, t15, x);		*z->val = (short)(rand() ^ buf[i]);		madd(x, z, x);	}	mdiv(x, b, q, x);	for(;;)	{	gcd(b, x, q);		if(q->len == 1 && q->val[0] == 1)			return;		madd(x, one, x);	}}mka(){	int i, j;	for(i=0; i<42; i++)		a[i] = itom(1);	for(i=j=0; i<42; i++, j++)	{	*z->val = (short)rand()&00;		mult(a[i], z, a[i]);		mult(a[i], t45, a[i]);		rpow(two, j, q);		if( i%14 == 6) j++;		madd(a[i], q, a[i]);		mult(a[i], t15, a[i]);		*z->val = (short)rand()&0777;		madd(a[i], z, a[i]);		mdiv(a[i], b, q, a[i]);	}	for(i=0; i<42; i++)		mult(a[i], x, a[i]);	for(i=0; i<42; i++)	{	mdiv(a[i], b, q, a[i]);	}}mkb(){	int i, c;	unsigned seed;	seed = 123;	for(i=0; i<13; i++)		seed = seed*buf[i] + i;	srand(seed);	*b->val = 04 + (rand()&03);	for(i=0; i<11; i++)	{	*z->val = (buf[i+2] + rand()) & 077;		mult(b, c64, b);		madd(b, z, b);	}}comminit(){	int i;	x = itom(0);	b = itom(1);	one = itom(1);	two = itom(2);	c64 = itom(64);	t45 = itom(1);	t15 = itom(1);	rpow(two, 45, t45);	rpow(two, 15, t15);	z = itom(1);	q = itom(1);}#ifndef debugnout(a, fd) MINT *a; FILE *fd;{	fwrite(&a->len, sizeof(int), 1, fd);	fwrite(a->val, sizeof(short), a->len, fd);}nin(a, fd) MINT *a; FILE *fd;{	xfree(a);	fread(&a->len, sizeof(int), 1, fd);	a->val = xalloc(a->len, "nin");	fread(a->val, sizeof(short), a->len, fd);}#endifxfatal(s) char *s;{	fprintf(stderr, "%s\n", s);	exit(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -