-
大小: 6KB文件類型: .rar金幣: 2下載: 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采集的電容觸摸按鍵
評論
共有 條評論