资源简介

国密SM4加密解密算法51单片机C语言版本,在STC15W408AS系列单片机测试通过。单片机要求存储器Flash空间至少5K及以上,XDATA至少256字节。

资源截图

代码片段和文件信息

/*
国密4加密解密单元(51单片机专用)
By ChengGeGe Studios
*/
#include “sm4_mcs51.h“

//s盒
static const U8 code SBOX[256] = {
0xd6U 0x90U 0xe9U 0xfeU 0xccU 0xe1U 0x3dU 0xb7U
0x16U 0xb6U 0x14U 0xc2U 0x28U 0xfbU 0x2cU 0x05U
0x2bU 0x67U 0x9aU 0x76U 0x2aU 0xbeU 0x04U 0xc3U
0xaaU 0x44U 0x13U 0x26U 0x49U 0x86U 0x06U 0x99U
0x9cU 0x42U 0x50U 0xf4U 0x91U 0xefU 0x98U 0x7aU
0x33U 0x54U 0x0bU 0x43U 0xedU 0xcfU 0xacU 0x62U
0xe4U 0xb3U 0x1cU 0xa9U 0xc9U 0x08U 0xe8U 0x95U
0x80U 0xdfU 0x94U 0xfaU 0x75U 0x8fU 0x3fU 0xa6U
0x47U 0x07U 0xa7U 0xfcU 0xf3U 0x73U 0x17U 0xbaU
0x83U 0x59U 0x3cU 0x19U 0xe6U 0x85U 0x4fU 0xa8U
0x68U 0x6bU 0x81U 0xb2U 0x71U 0x64U 0xdaU 0x8bU
0xf8U 0xebU 0x0fU 0x4bU 0x70U 0x56U 0x9dU 0x35U
0x1eU 0x24U 0x0eU 0x5eU 0x63U 0x58U 0xd1U 0xa2U
0x25U 0x22U 0x7cU 0x3bU 0x01U 0x21U 0x78U 0x87U
0xd4U 0x00U 0x46U 0x57U 0x9fU 0xd3U 0x27U 0x52U
0x4cU 0x36U 0x02U 0xe7U 0xa0U 0xc4U 0xc8U 0x9eU
0xeaU 0xbfU 0x8aU 0xd2U 0x40U 0xc7U 0x38U 0xb5U
0xa3U 0xf7U 0xf2U 0xceU 0xf9U 0x61U 0x15U 0xa1U
0xe0U 0xaeU 0x5dU 0xa4U 0x9bU 0x34U 0x1aU 0x55U
0xadU 0x93U 0x32U 0x30U 0xf5U 0x8cU 0xb1U 0xe3U
0x1dU 0xf6U 0xe2U 0x2eU 0x82U 0x66U 0xcaU 0x60U
0xc0U 0x29U 0x23U 0xabU 0x0dU 0x53U 0x4eU 0x6fU
0xd5U 0xdbU 0x37U 0x45U 0xdeU 0xfdU 0x8eU 0x2fU
0x03U 0xffU 0x6aU 0x72U 0x6dU 0x6cU 0x5bU 0x51U
0x8dU 0x1bU 0xafU 0x92U 0xbbU 0xddU 0xbcU 0x7fU
0x11U 0xd9U 0x5cU 0x41U 0x1fU 0x10U 0x5aU 0xd8U
0x0aU 0xc1U 0x31U 0x88U 0xa5U 0xcdU 0x7bU 0xbdU
0x2dU 0x74U 0xd0U 0x12U 0xb8U 0xe5U 0xb4U 0xb0U
0x89U 0x69U 0x97U 0x4aU 0x0cU 0x96U 0x77U 0x7eU
0x65U 0xb9U 0xf1U 0x09U 0xc5U 0x6eU 0xc6U 0x84U
0x18U 0xf0U 0x7dU 0xecU 0x3aU 0xdcU 0x4dU 0x20U
0x79U 0xeeU 0x5fU 0x3eU 0xd7U 0xcbU 0x39U 0x48U
};

//固定参数FK
static const U32 code FK[4] = {
0xa3b1bac6U 0x56aa3350U 0x677d9197U 0xb27022dcU
};

//固定参数CK
static const U32 code CK[32] = {
0x00070e15U 0x1c232a31U 0x383f464dU 0x545b6269U
0x70777e85U 0x8c939aa1U 0xa8afb6bdU 0xc4cbd2d9U
0xe0e7eef5U 0xfc030a11U 0x181f262dU 0x343b4249U
0x50575e65U 0x6c737a81U 0x888f969dU 0xa4abb2b9U
0xc0c7ced5U 0xdce3eaf1U 0xf8ff060dU 0x141b2229U
0x30373e45U 0x4c535a61U 0x686f767dU 0x848b9299U
0xa0a7aeb5U 0xbcc3cad1U 0xd8dfe6edU 0xf4fb0209U
0x10171e25U 0x2c333a41U 0x484f565dU 0x646b7279U
};


static U32 ROT32(U32 x U32 n)
{
return (x << n) | (x >> (32 - n));
}
 
static U32 LU32_0(U32 x)
{
return x ^ ROT32(x 13) ^ ROT32(x 23);
}

static U32 LU32_1(U32 x)
{
return x ^ ROT32(x  2) ^ ROT32(x  10) ^ ROT32(x  18) ^ ROT32(x  24);
}

static U32 SU32(U32 x)
{
return ((U32)SBOX[(x >> 24) & 0xff] << 24) ^ ((U32)SBOX[(x >> 16) & 0xff] << 16) ^ ((U32)SBOX[(x >> 8) & 0xff] << 8) ^ (U32)SBOX[x & 0xff];
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        515  2020-03-06 23:51  sm4_mcs51.h

     文件       5259  2020-03-06 22:32  sm4_mcs51.c

     文件        486  2020-03-07 00:05  test51sm4.c

     文件       2169  2020-03-05 11:11  SM4Demo.Uv2

----------- ---------  ---------- -----  ----

                 8429                    4


评论

共有 条评论