資源簡介
國密SM4算法源碼及demo,支持ECB、CBC,包含可直接拿來使用的算法源代碼和頭文件,測試demo,Linux下解壓直接make即可編譯測試。
代碼片段和文件信息
/*?測試代碼??
?*?SM4/SMS4?algorithm?test?programme??
?*?2017-4-20??
?*/??
#include???
#include???
#include?“sm4.h“??
//?plain:??0b?0b?2b?4f?54?05?fe?f1?e8?a2?64?fc?89?ab?21?0a?0b?0b?2b?4f?54?05?fe?f1?e8?a2?64?fc?89?ab?21?0a??
//?key:????b1?22?ad?0a?7a?36?2e?c3?ab?a1?dd?ef?b3?af?49?15??
//?iv: ???11?11?11?11?d1?a1?6c?20?67?70?8a?cb?d1?a1?6c?20
//?ECB?cypher:?70?dc?8d?69?65?da?2a?36?7c?db?a4?63?1c?39?a3?84?70?dc?8d?69?65?da?2a?36?7c?db?a4?63?1c?39?a3?84?
//?CBC?cypher:?33?91?0d?d4?61?7b?f4?3b?17?fc?7c?4c?7c?99?71?9c?6a?85?d9?07?7f?95?87?93?04?9e?b0?cd?a9?7a?a9?ad?
int?main()??
{??
unsigned?char?key[16]?=?{0xB10x220xAD0x0A0x7A0x360x2E0xC30xAB0xA10xDD0xEF0xB30xAF0x490x15};?
unsigned?char?iv[16]?=?{0x110x110x110x110xd10xa10x6c0x200x670x700x8a0xcb0xd10xa10x6c0x20};?
unsigned?char?input[32]?=??{0x0B0x0B0x2B0x4F0x540x050xFE0xF10xE80xA20x640xFC0x890xAB0x210x0A
0x0B0x0B0x2B0x4F0x540x050xFE0xF10xE80xA20x640xFC0x890xAB0x210x0A};
unsigned?char?output[32];
sm4_context?ctx;??
unsigned?long?i;??
unsigned?long?len?=?32;??
printf(“%-15s““Key:“);??
for(i=0;i<16;i++)??
printf(“%02x?“?key[i]);??
printf(“\n“);??
printf(“%-15s““IV:“);??
for(i=0;i<16;i++)??
printf(“%02x?“?iv[i]);??
printf(“\n“);?
//sm4?ecb?encrypt?testing???
sm4_setkey_enc(&ctxkey);??
sm4_crypt_ecb(&ctx1leninputoutput);??
printf(“%-15s““ECB?cipher:“);??
for(i=0;i printf(“%02x?“?output[i]);??
printf(“\n“);??
//sm4?ecb?decrypt?testing??
sm4_setkey_dec(&ctxkey);??
sm4_crypt_ecb(&ctx0lenoutputoutput);?
printf(“%-15s““ECB?dec?plain:“);??
for(i=0;i printf(“%02x?“?output[i]);??
printf(“\n“);??
//sm4?cbc?encrypt?testing???
sm4_setkey_enc(&ctxkey);??
sm4_crypt_cbc(&ctx1lenivinputoutput);??
printf(“%-15s““CBC?cipher:“);??
for(i=0;i printf(“%02x?“?output[i]);??
printf(“\n“);??
//sm4?cbc?decrypt?testing??
sm4_setkey_dec(&ctxkey);??
sm4_crypt_cbc(&ctx0lenivoutputoutput);?
printf(“%-15s““ECB?dec?plain:“);??
for(i=0;i printf(“%02x?“?output[i]);??
printf(“\n“);??
return?0;??
}?
評論
共有 條評論