plan9-sha1.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 79 行
C
79 行
#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 + =
减小字号Ctrl + -
显示快捷键?