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

📄 mycrypt_hash.h

📁 常用的64位密码加密算法
💻 H
📖 第 1 页 / 共 2 页
字号:
extern int  rmd160_test(void);extern const struct _hash_descriptor rmd160_desc;#endifextern int find_hash(const char *name);extern int find_hash_id(unsigned char ID);extern int find_hash_any(const char *name, int digestlen);extern int register_hash(const struct _hash_descriptor *hash);extern int unregister_hash(const struct _hash_descriptor *hash);extern int hash_is_valid(int idx);extern int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen);extern int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outlen);extern int hash_file(int hash, const char *fname, unsigned char *dst, unsigned long *outlen);/* a simple macro for making hash "process" functions */#define HASH_PROCESS(func_name, compress_name, state_var, block_size)                       \int func_name (hash_state * md, const unsigned char *buf, unsigned long len)               \{                                                                                           \    unsigned long n;                                                                        \    _ARGCHK(md != NULL);                                                                    \    _ARGCHK(buf != NULL);                                                                   \    if (md-> state_var .curlen > sizeof(md-> state_var .buf)) {                             \       return CRYPT_INVALID_ARG;                                                            \    }                                                                                       \    while (len > 0) {                                                                       \        if (md-> state_var .curlen == 0 && len >= block_size) {                             \           compress_name (md, (unsigned char *)buf);                                        \           md-> state_var .length += block_size * 8;                                        \           buf             += block_size;                                                   \           len             -= block_size;                                                   \        } else {                                                                            \           n = MIN(len, (block_size - md-> state_var .curlen));                             \           memcpy(md-> state_var .buf + md-> state_var.curlen, buf, (size_t)n);             \           md-> state_var .curlen += n;                                                     \           buf             += n;                                                            \           len             -= n;                                                            \           if (md-> state_var .curlen == block_size) {                                      \              compress_name (md, md-> state_var .buf);                                      \              md-> state_var .length += 8*block_size;                                       \              md-> state_var .curlen = 0;                                                   \           }                                                                                \       }                                                                                    \    }                                                                                       \    return CRYPT_OK;                                                                        \}#ifdef HMACtypedef struct Hmac_state {     hash_state     md;     int            hash;     hash_state     hashstate;     unsigned char  key[MAXBLOCKSIZE];} hmac_state;extern int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen);extern int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len);extern int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen);extern int hmac_test(void);extern int hmac_memory(int hash, const unsigned char *key, unsigned long keylen,                       const unsigned char *data, unsigned long len,                        unsigned char *dst, unsigned long *dstlen);extern int hmac_file(int hash, const char *fname, const unsigned char *key,                     unsigned long keylen,                      unsigned char *dst, unsigned long *dstlen);#endif#ifdef OMACtypedef struct {   int             cipher_idx,                    buflen,                   blklen;   unsigned char   block[MAXBLOCKSIZE],                   prev[MAXBLOCKSIZE],                   Lu[2][MAXBLOCKSIZE];   symmetric_key   key;} omac_state;extern int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen);extern int omac_process(omac_state *state, const unsigned char *buf, unsigned long len);extern int omac_done(omac_state *state, unsigned char *out, unsigned long *outlen);extern int omac_memory(int cipher, const unsigned char *key, unsigned long keylen,                const unsigned char *msg, unsigned long msglen,                unsigned char *out, unsigned long *outlen);extern int omac_file(int cipher, const unsigned char *key, unsigned long keylen,              const char *filename, unsigned char *out, unsigned long *outlen);extern int omac_test(void);#endif /* OMAC */#ifdef PMACtypedef struct {   unsigned char     Ls[32][MAXBLOCKSIZE],    /* L shifted by i bits to the left */                     Li[MAXBLOCKSIZE],        /* value of Li [current value, we calc from previous recall] */                     Lr[MAXBLOCKSIZE],        /* L * x^-1 */                     block[MAXBLOCKSIZE],     /* currently accumulated block */                     checksum[MAXBLOCKSIZE];  /* current checksum */   symmetric_key     key;                     /* scheduled key for cipher */   unsigned long     block_index;             /* index # for current block */   int               cipher_idx,              /* cipher idx */                     block_len,               /* length of block */                     buflen;                  /* number of bytes in the buffer */} pmac_state;extern int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen);extern int pmac_process(pmac_state *state, const unsigned char *buf, unsigned long len);extern int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen);extern int pmac_memory(int cipher, const unsigned char *key, unsigned long keylen,                const unsigned char *msg, unsigned long msglen,                unsigned char *out, unsigned long *outlen);extern int pmac_file(int cipher, const unsigned char *key, unsigned long keylen,              const char *filename, unsigned char *out, unsigned long *outlen);extern int pmac_test(void);/* internal functions */extern int pmac_ntz(unsigned long x);extern void pmac_shift_xor(pmac_state *pmac);#endif /* PMAC */#ifdef EAX_MODE#if !(defined(OMAC) && defined(CTR))   #error EAX_MODE requires OMAC and CTR#endiftypedef struct {   unsigned char N[MAXBLOCKSIZE];   symmetric_CTR ctr;   omac_state    headeromac, ctomac;} eax_state;extern int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen,                    const unsigned char *nonce, unsigned long noncelen,                    const unsigned char *header, unsigned long headerlen);extern int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length);extern int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length);extern int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length);extern int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen);extern int eax_encrypt_authenticate_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,  unsigned long noncelen,    const unsigned char *header, unsigned long headerlen,    const unsigned char *pt,     unsigned long ptlen,          unsigned char *ct,          unsigned char *tag,    unsigned long *taglen);extern int eax_decrypt_verify_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,  unsigned long noncelen,    const unsigned char *header, unsigned long headerlen,    const unsigned char *ct,     unsigned long ctlen,          unsigned char *pt,          unsigned char *tag,    unsigned long taglen,          int           *res);extern int eax_test(void);#endif /* EAX MODE */#ifdef OCB_MODEtypedef struct {   unsigned char     L[MAXBLOCKSIZE],         /* L value */                     Ls[32][MAXBLOCKSIZE],    /* L shifted by i bits to the left */                     Li[MAXBLOCKSIZE],        /* value of Li [current value, we calc from previous recall] */                     Lr[MAXBLOCKSIZE],        /* L * x^-1 */                     R[MAXBLOCKSIZE],         /* R value */                     checksum[MAXBLOCKSIZE];  /* current checksum */   symmetric_key     key;                     /* scheduled key for cipher */   unsigned long     block_index;             /* index # for current block */   int               cipher,                  /* cipher idx */                     block_len;               /* length of block */} ocb_state;extern int ocb_init(ocb_state *ocb, int cipher,              const unsigned char *key, unsigned long keylen, const unsigned char *nonce);extern int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct);extern int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt);extern int ocb_done_encrypt(ocb_state *ocb,                      const unsigned char *pt,  unsigned long ptlen,                           unsigned char *ct,                            unsigned char *tag, unsigned long *taglen);extern int ocb_done_decrypt(ocb_state *ocb,                      const unsigned char *ct,  unsigned long ctlen,                           unsigned char *pt,                      const unsigned char *tag, unsigned long taglen, int *res);extern int ocb_encrypt_authenticate_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,      const unsigned char *pt,     unsigned long ptlen,          unsigned char *ct,          unsigned char *tag,    unsigned long *taglen);extern int ocb_decrypt_verify_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,      const unsigned char *ct,     unsigned long ctlen,          unsigned char *pt,    const unsigned char *tag,    unsigned long taglen,          int           *res);extern int ocb_test(void);/* internal functions */extern void ocb_shift_xor(ocb_state *ocb, unsigned char *Z);extern int ocb_ntz(unsigned long x);extern int __ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen,                     unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode);#endif /* OCB_MODE */

⌨️ 快捷键说明

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