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

📄 aes_example.c

📁 Dr.Sec高速密码算法库Windows版
💻 C
字号:
#include <windows.h>
#include <stdio.h>
#include <time.h>
#include "aes.h"

/*	Test Vector	from Daemon's implemention
KEY=000102030405060708090A0B0C0D0E0F
PT=00112233445566778899AABBCCDDEEFF
CT=69C4E0D86A7B0430D8CDB78070B4C55A
*/

#define NUM 25
#define BLOCK (NUM*1000*1000)

static unsigned char key[32] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
static int Nr;
static int keyBits = 128; 

static unsigned long RK[256];
static unsigned char plain[16] = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,
								  0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};
static unsigned char cipher[16];

char str[1024];

void nullfunc (unsigned long *rk,unsigned char *plain, unsigned char *cipher)
{
	return;
}

void aes_example()
{
	clock_t start,end,t1,t2;
	float mid;
	int i;

	Nr = ds_aesKeySetupEnc(RK,key,keyBits);

	start = clock();
	for(i = 0; i<BLOCK; i++){
		ds_aesEncryptBlock128(RK,plain,cipher);
	}
	end = clock();
	t1 =  end - start;

	start = clock();
	for(i = 0; i<BLOCK; i++){
		nullfunc(RK,plain,cipher);
	}
	end = clock();
	t2 =  end - start;

	str[0] = 0;
	sprintf(str+strlen(str),"Encrypt speed of AES\r\n");

	sprintf(str+strlen(str),"%dM 128-bit blocks encrypted in %d microseconds\r\n",NUM,t1-t2);
	mid = (float)(t1 - t2);
	sprintf(str+strlen(str),"Speed is %.2f\r\n",(NUM*128000)/mid);

	sprintf(str+strlen(str),"\r\nPlain text:    00112233445566778899AABBCCDDEEFF");
	sprintf(str+strlen(str),"\r\nCipher text:   ");
	for(i=0;i<16;i++)
		sprintf(str+strlen(str),"%02X",cipher[i]);
	sprintf(str+strlen(str),"\r\nIt should be:  69C4E0D86A7B0430D8CDB78070B4C55A\r\n");

	Nr = ds_aesKeySetupDec(RK,key,keyBits);
	ds_aesDecryptBlock128(RK,cipher,plain);

	sprintf(str+strlen(str),"\r\nAfter Decryption: ");
	for(i=0;i<16;i++)
		sprintf(str+strlen(str),"%02X",plain[i]);
	
	MessageBox(NULL,str,"AES test",MB_OK);
}



⌨️ 快捷键说明

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