-
大小: 6KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-05-29
- 语言: 其他
- 标签: SM3 verilogHDL
资源简介
SM3的一种verilogHDL实现,包括testbench测试文件。SM3是国家密码管理局编制的商用算法,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
代码片段和文件信息
/***************************************************************************
* File name : SM3c.c
* Function : SM3 function
* Author :
* Date : 2011/03/
* Version : v1.0
* Description :
* ModifyRecord :
****************************************************************************/
#include “HDR\AS5xx_Device.h“
#include “SM3.h“
static void SM3Transform(UINT32 stateIV[8] UINT32 T[64] UINT8 block[64]);
static void Extend(UINT32 *outputUINT32 *output1UINT32 *inputUINT32 len);
static void Encode(UINT8 *outputUINT32 *inputUINT32 len);
static void Decode(UINT32 *outputUINT8 *inputUINT32 len);
static UINT8 PADDING[64] = {
0x80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
};
/* ROTATE_LEFT rotates x left n bits.
*/
#define ROTATE_LEFT(x n) (((x) << (n)) | ((x) >> (32-(n))))
/*Substi_P0Substi_P1Bool_FF and Bool_GG are basic SM3 functions.
*/
#define Substi_P0(x) ((x) ^ ROTATE_LEFT((x) 9) ^ ROTATE_LEFT((x) 17))
#define Substi_P1(x) ((x) ^ ROTATE_LEFT((x) 15) ^ ROTATE_LEFT((x) 23))
#define Bool_FF(x y z j) ((j) < 16) ? ((x) ^ (y) ^ (z)) : (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
#define Bool_GG(x y z j) ((j) < 16) ? ((x) ^ (y) ^ (z)) : ((x) & (y) | ((0xffffffff^x) & (z)))
/* SS1SS2TT1 and TT2 are the transform functions for the SM3 algorithm
be using to generate intervening variables ss1ss2tt1tt2.
#define SS1(a b t j) {\
UINT32 s1 = ROTATE_LEFT(a 12) + b + ROTATE_LEFT(t j);\
s1 = ROTATE_LEFT(s1 7);\
return s1;\
}
#define SS2(a b) {\
(UINT32) s2 = a ^ ROTATE_LEFT(b 12);\
return s2;\
}
#define TT1(a b c d x w1 j) {\
(UINT32) t1 = Bool_FF(a b c j) + d + x + w1[j];\
return t1;\
}
#define TT2(a b c d x w j) {\
(UINT32) t2 = Bool_GG(a b c j) + d + x + w[j];\
return t2;\
}
*/
/***************************************************************************
* Subroutine: SM3_Init
* Function: SM3 initialization. Begins an SM3 operation writing a new context.
* Input: context-SM3 Context struct
* Output: None;
* Description:
* Date: 2011.03.
* ModifyRecord:
* *************************************************************************/
void SM3_Init (SM3_CONTEXT *context)
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.
*/
context->stateIV[0] = 0x7380166f;
context->stateIV[1] = 0x4914b2b9;
context->stateIV[2] = 0x172442d7;
context->stateIV[3] = 0xda8a0600;
context->stateIV[4] = 0xa96f30bc;
context->stateIV[5] = 0x163138aa;
context->stateIV[6] = 0xe38dee4d;
context->stateIV[7] = 0xb0fb0e4e;
/* Load initial constant list T.
*/
for (UINT16 j=0;j<=15;j++)
{
context->T[
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 913 2011-03-10 15:38 SM3.h
文件 9487 2011-03-15 10:08 SM3.c
文件 3769 2013-06-07 16:38 test_SM3.v
文件 16233 2013-05-07 16:31 SM3.v
----------- --------- ---------- ----- ----
30402 4
- 上一篇:cesium跨域加载问题
- 下一篇:基于AD采集的电容触摸按键
相关资源
- SRAM读写操作,VerilogHDL代码
- lsm303dlh电子罗盘传感器hal程序
- 自己整理的国标SM3哈希算法
- sm3 c版本
- sm2/sm3算法验证工具,预运算、大数计
- VerilogHDL在FPGA中实现的数字时钟
- 基于FPGA用verilogHDL设计的DES加密模块
- 基于FPGA用verilogHDL设计的CRC32模块
- MEMS AND SENSORS SOFTWARE
- FFT64+FPGA+verilogHDL
- SM3算法的FPGA设计与实现.pdf
- gmssl 2.0测试sm2加解密、签名 sm3摘要
- SHA-3 verilogHDL实现
- iNEMO-V2LSM303DLHC(3轴加速度+3轴地磁)
- openssl_sm2_sm3_c.zip
- CAN总线IP核的VerilogHDL源码
- sm2、sm3源代码,openssl可直接调用
- SM2 加密解密
- 惠荣SM3252a量产工具
- 国密 SM2 SM3 签名 验签 加解密 公私钥
- 国密SM2SM3SM4计算工具
- 典型密码算法FPGA实现-DESAES3DESECCSM2,
- security-sm2-sm3.zip
- WinAsm32教程
- SM3257enlt量产工具
- 使用openssl 1.1.1版本调试国密SM2签名、
- sm3 hmac-sm3
- xilinx DDR3接口代码VerilogHDLC
- VerilogHDL编写的电子钟
- SHA-256的一种verilogHDL实现
评论
共有 条评论