• 大小: 9KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: 国密  SM4  

资源简介

国密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;  


评论

共有 条评论