passtokey.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 34 行

C
34
字号
#include <u.h>#include <libc.h>#include <authsrv.h>intpasstokey(char *key, char *p){	uchar buf[ANAMELEN], *t;	int i, n;	n = strlen(p);	if(n >= ANAMELEN)		n = ANAMELEN-1;	memset(buf, ' ', 8);	t = buf;	strncpy((char*)t, p, n);	t[n] = 0;	memset(key, 0, DESKEYLEN);	for(;;){		for(i = 0; i < DESKEYLEN; i++)			key[i] = (t[i] >> i) + (t[i+1] << (8 - (i+1)));		if(n <= 8)			return 1;		n -= 8;		t += 8;		if(n < 8){			t -= 8 - n;			n = 8;		}		encrypt(key, t, 8);	}	return 1;	/* not reached */}

⌨️ 快捷键说明

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