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

📄 sha1sum.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include <libsec.h>#pragma	varargck	type	"M"	uchar*static intdigestfmt(Fmt *fmt){	char buf[SHA1dlen*2+1];	uchar *p;	int i;	p = va_arg(fmt->args, uchar*);	for(i=0; i<SHA1dlen; i++)		sprint(buf+2*i, "%.2ux", p[i]);	return fmtstrcpy(fmt, buf);}static voidsum(int fd, char *name){	int n;	uchar buf[8192], digest[SHA1dlen];	DigestState *s;	s = sha1(nil, 0, nil, nil);	while((n = read(fd, buf, sizeof buf)) > 0)		sha1(buf, n, nil, s);	sha1(nil, 0, digest, s);	if(name == nil)		print("%M\n", digest);	else		print("%M\t%s\n", digest, name);}voidmain(int argc, char *argv[]){	int i, fd;	ARGBEGIN{	default:		fprint(2, "usage: sha1sum [file...]\n");		exits("usage");	}ARGEND	fmtinstall('M', digestfmt);	if(argc == 0)		sum(0, nil);	else for(i = 0; i < argc; i++){		fd = open(argv[i], OREAD);		if(fd < 0){			fprint(2, "sha1sum: can't open %s: %r\n", argv[i]);			continue;		}		sum(fd, argv[i]);		close(fd);	}	exits(nil);}

⌨️ 快捷键说明

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