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

📄 cryptohash.h

📁 ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 还有其他赠送内容
💻 H
字号:
//
//	written by drizz <1of00@gmx.net>
//

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _WINDOWS_
typedef unsigned long DWORD;
typedef unsigned char BYTE;
#endif

// CIPHERS
// =======

// DES
__stdcall DESSetKey       ( BYTE *pKey );
__stdcall DESSetKeyEnc    ( BYTE *pKey );
__stdcall DESSetKeyDec    ( BYTE *pKey );
__stdcall DESEncrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall DESDecrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
// Twofish
__stdcall TwofishInit     ( BYTE *pKey,DWORD dwKeyLen);
__stdcall TwofishEncrypt  ( BYTE *pBlockIn,BYTE *pBlockOut);
__stdcall TwofishDecrypt  ( BYTE *pBlockIn,BYTE *pBlockOut);
// RC2
__stdcall RC2Init         ( BYTE *pKey,DWORD dwKeyLen );
__stdcall RC2Encrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall RC2Decrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
// RC4
__stdcall RC4Init         ( BYTE *pKey,DWORD dwKeyLen );
__stdcall RC4Encrypt      ( BYTE *pBlock,DWORD dwBlockLen );
#define   RC4Decrypt      RC4Encrypt
// RC5
__stdcall RC5Init         ( BYTE *pKey );
__stdcall RC5Encrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall RC5Decrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
// RC6
__stdcall RC6Init         ( BYTE *pKey,DWORD dwKeyLen );
__stdcall RC6Encrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall RC6Decrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
// TEA
__stdcall TEAInit	      ( BYTE *pKey );
__stdcall TEAEncrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall TEADecrypt      ( BYTE *pBlockIn,BYTE *pBlockOut );
// XTEA
__stdcall XTEAInit	      ( BYTE *pKey,DWORD dwRounds );
__stdcall XTEAEncrypt     ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall XTEADecrypt     ( BYTE *pBlockIn,BYTE *pBlockOut );
// AES - Rijndael
__stdcall RijndaelInit    ( BYTE *pKey,DWORD dwKeyLen );
__stdcall RijndaelEncrypt ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall RijndaelDecrypt ( BYTE *pBlockIn,BYTE *pBlockOut );
// 3-WAY
__stdcall ThreeWayInit    ( BYTE *pKey );
__stdcall ThreeWayEncrypt ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall ThreeWayDecrypt ( BYTE *pBlockIn,BYTE *pBlockOut );
// Blowfish
__stdcall BlowfishInit    ( BYTE *pKey,DWORD dwKeyLen );
__stdcall BlowfishEncrypt ( BYTE *pBlockIn,BYTE *pBlockOut );
__stdcall BlowfishDecrypt ( BYTE *pBlockIn,BYTE *pBlockOut );

// CHECKSUMS
// =========

#define INIT_CRC32 0
#define INIT_CRC16 0
#define INIT_ADLER32 1

__stdcall CRC32   ( BYTE *lpBuffer,DWORD dwBufLen,DWORD dwCRC );   // init dwCRC = 0
__stdcall RCRC32  ( BYTE *pData,DWORD dwDataLen,DWORD dwOffset,DWORD dwWantCrc );   // reverse CRC32
__stdcall CRC16   ( BYTE *lpBuffer,DWORD dwBufLen,DWORD dwCRC );   // init dwCRC = 0
__stdcall Adler32 ( BYTE *lpBuffer,DWORD dwBufLen,DWORD dwAdler ); // init dwAdler = 1

// HASHES
// ======

#define MD5_DIGESTSIZE (128/8)
#define MD4_DIGESTSIZE (128/8)
#define MD2_DIGESTSIZE (128/8)
#define RMD128_DIGESTSIZE (128/8)
#define RMD160_DIGESTSIZE (160/8)
#define RMD256_DIGESTSIZE (256/8)
#define RMD320_DIGESTSIZE (320/8)
#define SHA0_DIGESTSIZE (160/8)
#define SHA1_DIGESTSIZE (160/8)
#define SHA256_DIGESTSIZE (256/8)
#define SHA384_DIGESTSIZE (384/8)
#define SHA512_DIGESTSIZE (512/8)
#define WHIRLPOOL_DIGESTSIZE (512/8)
#define TIGER_DIGESTSIZE (192/8)

BYTE * __stdcall MD5Init ();
       __stdcall MD5Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall MD5Final ();
BYTE * __stdcall MD4Init ();
       __stdcall MD4Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall MD4Final ();
BYTE * __stdcall MD2Init ();
       __stdcall MD2Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall MD2Final ();
BYTE * __stdcall RMD128Init ();
       __stdcall RMD128Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall RMD128Final ();
BYTE * __stdcall RMD160Init ();
       __stdcall RMD160Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall RMD160Final ();
BYTE * __stdcall RMD256Init ();
       __stdcall RMD256Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall RMD256Final ();
BYTE * __stdcall RMD320Init ();
       __stdcall RMD320Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall RMD320Final ();
BYTE * __stdcall SHA0Init ();
       __stdcall SHA0Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall SHA0Final ();
BYTE * __stdcall SHA1Init ();
       __stdcall SHA1Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall SHA1Final ();
BYTE * __stdcall SHA256Init ();
       __stdcall SHA256Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall SHA256Final ();
BYTE * __stdcall SHA384Init ();
       __stdcall SHA384Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall SHA384Final ();
BYTE * __stdcall SHA512Init ();
       __stdcall SHA512Update ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall SHA512Final ();
BYTE * __stdcall WhirlpoolInit ();
       __stdcall WhirlpoolUpdate ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall WhirlpoolFinal ();
BYTE * __stdcall TigerInit ();
       __stdcall TigerUpdate ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall TigerFinal ();
BYTE * __stdcall HavalInit ( DWORD DigestSizeBits,DWORD Passes  );// variable digest & passes !!!
       __stdcall HavalUpdate ( BYTE *lpBuffer,DWORD dwBufLen );
BYTE * __stdcall HavalFinal ();


// TEXT UTILS
// ==========

DWORD __stdcall HexEncode    ( BYTE *pBuff,DWORD dwLen,BYTE *pOutBuff );// sizeof pOutBuff must be (dwLen)*2+2
DWORD __stdcall HexDecode    ( BYTE *pHexStr,BYTE *pOutBuffer); //sizeof pOutBuff must be StrLen(pHexStr)/2+1
DWORD __stdcall Base64Encode ( BYTE *pInputData,DWORD dwDataLen,BYTE *pOutputStr );// sizeof pOutputStr must be (dwLen)*4/3
DWORD __stdcall Base64Decode ( BYTE *pInputStr,BYTE *pOutputData );// result = length
DWORD __stdcall Base2Decode  ( BYTE *pInputStr,BYTE *pOutputData);// result = length
DWORD __stdcall Base2Encode  ( BYTE *pInputData,DWORD dwDataLen,BYTE *pOutputData);// result = length

#ifdef __cplusplus
}
#endif

⌨️ 快捷键说明

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