shaxtra.c
来自「source of perl for linux application,」· C语言 代码 · 共 58 行
C
58 行
#include <stdio.h>#include <string.h>#include "sha.h"static unsigned char *shacomp(alg, fmt, bitstr, bitcnt)int alg;int fmt;unsigned char *bitstr;unsigned long bitcnt;{ SHA *s; static unsigned char digest[SHA_MAX_HEX_LEN+1]; unsigned char *ret = digest; if ((s = shaopen(alg)) == NULL) return(NULL); shawrite(bitstr, bitcnt, s); shafinish(s); if (fmt == SHA_FMT_RAW) memcpy(digest, shadigest(s), s->digestlen); else if (fmt == SHA_FMT_HEX) strcpy((char *) digest, shahex(s)); else if (fmt == SHA_FMT_BASE64) strcpy((char *) digest, shabase64(s)); else ret = NULL; shaclose(s); return(ret);}#define SHA_DIRECT(type, name, alg, fmt) \type name(bitstr, bitcnt) \unsigned char *bitstr; \unsigned long bitcnt; \{ \ return((type) shacomp(alg, fmt, bitstr, bitcnt)); \}SHA_DIRECT(unsigned char *, sha1digest, SHA1, SHA_FMT_RAW)SHA_DIRECT(char *, sha1hex, SHA1, SHA_FMT_HEX)SHA_DIRECT(char *, sha1base64, SHA1, SHA_FMT_BASE64)SHA_DIRECT(unsigned char *, sha224digest, SHA224, SHA_FMT_RAW)SHA_DIRECT(char *, sha224hex, SHA224, SHA_FMT_HEX)SHA_DIRECT(char *, sha224base64, SHA224, SHA_FMT_BASE64)SHA_DIRECT(unsigned char *, sha256digest, SHA256, SHA_FMT_RAW)SHA_DIRECT(char *, sha256hex, SHA256, SHA_FMT_HEX)SHA_DIRECT(char *, sha256base64, SHA256, SHA_FMT_BASE64)SHA_DIRECT(unsigned char *, sha384digest, SHA384, SHA_FMT_RAW)SHA_DIRECT(char *, sha384hex, SHA384, SHA_FMT_HEX)SHA_DIRECT(char *, sha384base64, SHA384, SHA_FMT_BASE64)SHA_DIRECT(unsigned char *, sha512digest, SHA512, SHA_FMT_RAW)SHA_DIRECT(char *, sha512hex, SHA512, SHA_FMT_HEX)SHA_DIRECT(char *, sha512base64, SHA512, SHA_FMT_BASE64)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?