10 Years of Service
70%
Hashes:
MD4
MD2
RMD128
RMD256
RMD320
SHA0
SHA1
SHA256
SHA384
SHA512
TIGER
WHIRLPOOL
HAVAL
MD5
Checksums:
CRC32
CRC16
ADLER
Ciphers:
TEA
XTEA
RC2
RC4
RC5
RC6
BLOWFISH
3-WAY
RIJNDAEL
DES
TWOFISH
Text Formats:
HEX
BASE64
BASE2
Examples:
C:
[LENGUAJE=C]
[/LENGUAJE]
MASM32:
[LENGUAJE=ASM]
[/LENGUAJE]
Lib
Lib source
MD4
MD2
RMD128
RMD256
RMD320
SHA0
SHA1
SHA256
SHA384
SHA512
TIGER
WHIRLPOOL
HAVAL
MD5
Checksums:
CRC32
CRC16
ADLER
Ciphers:
TEA
XTEA
RC2
RC4
RC5
RC6
BLOWFISH
3-WAY
RIJNDAEL
DES
TWOFISH
Text Formats:
HEX
BASE64
BASE2
Examples:
C:
[LENGUAJE=C]
Code:
>#include
#include
#include
#include "cryptohash.h"
#pragma comment(linker,"/DEFAULTLIB:cryptohash.lib")
MD5String(char *sz)
{
char szMD5[MD5_DIGESTSIZE*2+2];
MD5Init();
MD5Update((BYTE *)sz,strlen(sz));
HexEncode(MD5Final(),MD5_DIGESTSIZE,(BYTE *)szMD5);
puts((char *)&szMD5);
}
SHA1String(char *sz)
{
char szSHA1[sHA1_DIGESTSIZE*2+2];
SHA1Init();
SHA1Update((BYTE *)sz,strlen(sz));
HexEncode(SHA1Final(),SHA1_DIGESTSIZE,(BYTE *)szSHA1);
puts((char *)&szSHA1);
}
MD5HMAC(BYTE *pKey,DWORD dwKeyLen,BYTE *pData,DWORD dwDataLen)
{
BYTE k_ipad[64],k_opad[64],tk[16];
char szMD5[MD5_DIGESTSIZE*2+2];
memcpy(&tk,pKey,16);
if (dwKeyLen>64)
{
MD5Init();
MD5Update(pKey,dwKeyLen);
memcpy(&tk,MD5Final(),16);
}
memset(&k_ipad,0,64);
memset(&k_opad,0,64);
memcpy(&k_ipad,&tk,16);
memcpy(&k_opad,&tk,16);
for (int i=0; i<(64/4); i++ )
{
*((DWORD *)((DWORD)k_ipad+i*4))^=0x36363636;
*((DWORD *)((DWORD)k_opad+i*4))^=0x5C5C5C5C;
}
MD5Init();
MD5Update((BYTE *)&k_ipad,64);
MD5Update(pData,dwDataLen);
memcpy(&tk,MD5Final(),16);
MD5Init();
MD5Update((BYTE *)&k_opad,64);
MD5Update((BYTE *)&tk,16);
HexEncode(MD5Final(),MD5_DIGESTSIZE,(BYTE *)szMD5);
puts((char *)&szMD5);
}
//2. Test Cases for HMAC-MD5
//test_case = 1;
BYTE key[] = { 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b };
int key_len = 16;
char data[] = "Hi There";
int data_len = 8;
BYTE digest[]= { 0x92,0x94,0x72,0x7a,0x36,0x38,0xbb,0x1c,0x13,0xf4,0x8e,0xf8,0x15,0x8b,0xfc,0x9d };
int main(int argc,char *argv[])
{
MD5String("a");
SHA1String("a");
MD5HMAC((BYTE *)&key,key_len,(BYTE *)&data,data_len);
char szBuff[MD5_DIGESTSIZE*2+2];
HexEncode((BYTE *)&digest,MD5_DIGESTSIZE,(BYTE *)szBuff);
puts((char *)&szBuff);
return getchar();
}
MASM32:
[LENGUAJE=ASM]
Code:
>.686
.model flat,stdcall
option casemap:none
assume fs:nothing
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
include stdlib.inc; will be used only for console i/o
includelib stdlib.lib
include cryptohash.inc
includelib cryptohash.lib
.data?
align 4
slen dd ?
align 16
inbuffer db 400h dup (?)
outbuffer db 400h dup (?)
.code
ConMain proc
invoke Readln,T('Enter string to hash: '),offset inbuffer,sizeof inbuffer
invoke StrLen,offset inbuffer
mov slen,eax
invoke Writelnf,T('hashing "%s" length: %u',13,10),offset inbuffer,slen
invoke CRC16,offset inbuffer,slen,INIT_CRC16
invoke Writelnf,T('CRC16: %.4X'),eax
invoke CRC32,offset inbuffer,slen,INIT_CRC32
invoke Writelnf,T('CRC32: %.8X'),eax
invoke Adler32,offset inbuffer,slen,INIT_ADLER32
invoke Writelnf,T('ADLER32: %.8X'),eax
invoke MD2Init
invoke MD2Update,offset inbuffer,slen
invoke MD2Final
invoke HexEncoder,eax,MD2_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('MD2: %s'),addr outbuffer
invoke MD4Init
invoke MD4Update,offset inbuffer,slen
invoke MD4Final
invoke HexEncoder,eax,MD4_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('MD4: %s'),addr outbuffer
invoke MD5Init
invoke MD5Update,offset inbuffer,slen
invoke MD5Final
invoke HexEncoder,eax,MD5_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('MD5: %s'),addr outbuffer
invoke RMD128Init
invoke RMD128Update,offset inbuffer,slen
invoke RMD128Final
invoke HexEncoder,eax,RMD128_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('RMD128: %s'),addr outbuffer
invoke RMD160Init
invoke RMD160Update,offset inbuffer,slen
invoke RMD160Final
invoke HexEncoder,eax,RMD160_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('RMD160: %s'),addr outbuffer
invoke RMD256Init
invoke RMD256Update,offset inbuffer,slen
invoke RMD256Final
invoke HexEncoder,eax,RMD256_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('RMD256: %s'),addr outbuffer
invoke RMD320Init
invoke RMD320Update,offset inbuffer,slen
invoke RMD320Final
invoke HexEncoder,eax,RMD320_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('RMD320: %s'),addr outbuffer
invoke SHA1Init
invoke SHA1Update,offset inbuffer,slen
invoke SHA1Final
invoke HexEncoder,eax,SHA1_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('SHA1: %s'),addr outbuffer
invoke SHA256Init
invoke SHA256Update,offset inbuffer,slen
invoke SHA256Final
invoke HexEncoder,eax,SHA256_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('SHA256: %s'),addr outbuffer
invoke SHA384Init
invoke SHA384Update,offset inbuffer,slen
invoke SHA384Final
invoke HexEncoder,eax,SHA384_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('SHA384: %s'),addr outbuffer
invoke SHA512Init
invoke SHA512Update,offset inbuffer,slen
invoke SHA512Final
invoke HexEncoder,eax,SHA512_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('SHA512: %s'),addr outbuffer
invoke TigerInit
invoke TigerUpdate,offset inbuffer,slen
invoke TigerFinal
invoke HexEncoder,eax,TIGER_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('Tiger: %s'),addr outbuffer
invoke WhirlpoolInit
invoke WhirlpoolUpdate,offset inbuffer,slen
invoke WhirlpoolFinal
invoke HexEncoder,eax,WHIRLPOOL_DIGESTSIZE/8,addr outbuffer
invoke Writelnf,T('Whirlpool: %s'),addr outbuffer
mov esi,128;digestsize
.repeat
mov edi,3;pass
.repeat
invoke HavalInit,esi,edi
invoke HavalUpdate,offset inbuffer,slen
invoke HavalFinal
mov ecx,esi
shr ecx,3
invoke HexEncoder,eax,ecx,addr outbuffer
invoke Writelnf,T('Haval(%u,%u): %s'),esi,edi,addr outbuffer
inc edi
.until edi > 5
add esi,32
.until esi > 256
invoke Getch
ret
ConMain endp
start:
invoke InitConsole
invoke ConMain
invoke ExitProcess,eax
end start
Lib
This link is hidden for visitors. Please Log in or register now.
Lib source
This link is hidden for visitors. Please Log in or register now.