• Earn real money by being active: Hello Guest, earn real money by simply being active on the forum — post quality content, get reactions, and help the community. Once you reach the minimum credit amount, you’ll be able to withdraw your balance directly. Learn how it works.

ASM C/ASM Crypto Library (Hashes, Checksums, Ciphers, and Text Formats)

Status
Not open for further replies.

top10

Moderator
User
Joined
Mar 18, 2015
Messages
487
Reputation
0
Reaction score
5,047
Points
243
Credits
0
‎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]

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();
}
[/LENGUAJE]

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
[/LENGUAJE]

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.


 
Status
Not open for further replies.
Back
Top