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

📄 plan9-sha1.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <venti.h>#include <libsec.h>static void encode(uchar*, u32int*, ulong);extern void vtSha1Block(u32int *s, uchar *p, ulong len);struct VtSha1{	DigestState *s;};VtSha1 *vtSha1Alloc(void){	VtSha1 *s;	s = vtMemAlloc(sizeof(VtSha1));	vtSha1Init(s);	return s;}voidvtSha1Free(VtSha1 *s){	if(s == nil)		return;	if(s->s != nil)		free(s->s);	vtMemFree(s);}voidvtSha1Init(VtSha1 *s){	s->s = nil;}voidvtSha1Update(VtSha1 *s, uchar *p, int len){	s->s = sha1(p, len, nil, s->s);}voidvtSha1Final(VtSha1 *s, uchar *digest){	sha1(nil, 0, digest, s->s);	s->s = nil;}voidvtSha1(uchar sha1[VtScoreSize], uchar *p, int n){	VtSha1 s;	vtSha1Init(&s);	vtSha1Update(&s, p, n);	vtSha1Final(&s, sha1);}intvtSha1Check(uchar score[VtScoreSize], uchar *p, int n){	VtSha1 s;	uchar score2[VtScoreSize];	vtSha1Init(&s);	vtSha1Update(&s, p, n);	vtSha1Final(&s, score2);	if(memcmp(score, score2, VtScoreSize) != 0) {		vtSetError("vtSha1Check failed");		return 0;	}	return 1;}

⌨️ 快捷键说明

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