以下代码实现了AES-ECB的正确性测试(标准测试数据),以及性能测试
说明:
1. 代码里面使用了一个Str2Num函数,它将测试向量中的字符串转为十六进制字节数据,可自行实现。
2. 测试向量出处为NIST SP 800-38A (Recommendation for Block Cipher Modes of Operation:Methods and Techniques)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Test_ECB_AES.h
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include
#include “tomcrypt.h”
#include “TestMode.h”
typedef struct NistECBTestVector_st{
char * name;//test vetor name
int keylen;
int msglen;
BYTE * key[1]; // 密钥
BYTE * IV[1]; // 初始化向量
BYTE * pt[4]; // 明文,暂时最多支持四段明文
BYTE * ct[4]; // 密文,暂时最多支持四段明文
BYTE * nonce[1];
BYTE * associated_data[1];
BYTE * mac[1];
} NistECBTestVector;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Test_ECB_AES.cpp
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include
#include “tomcrypt.h”
#include “TestMode.h”
#include “Test_ECB_AES.h”
int Test_ECB_AES_Alg(void)
{
int idx, err, i, res;
BYTE buf[64];
symmetric_ECB ctr;
int keylen, msglen;
BYTE key[32], IV[16], pt[64], ct[64];
char *p_operate;
IV[0] = 0;
printf(“Test ECB Speed Begin ! Use Alg %s\n”, p_cipher_name );
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201802.html原文链接:https://javaforall.net
