GM/T 0004-2012 SM3密码杂凑算法

GM/T 0004-2012 SM3 cryptographic hash algorithm

行业标准-密码 中文简体 现行 页数:14页 | 格式:PDF

基本信息

标准号
GM/T 0004-2012
标准类型
行业标准-密码
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
发布日期
2012-03-21
实施日期
2012-03-21
发布单位/组织
国家密码管理局
归口单位
国家密码管理局
适用范围
本标准规定了SM3密码杂凑算法的计算方法和计算步骤,并给出了运算示例。
本标准适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。同时,本标准还可为安全产品生产商提供产品和技术的标准定位以及标准化的参考,提高安全产品的可信性与互操作性。

发布历史

研制信息

起草单位:
清华大学、国家密码管理局商用密码检测中心、解放军信息工程大学、中国科学院数据与通信保护研究教育中心
起草人:
王小云、李峥、于红波、张超、罗鹏、吕述望
出版信息:
页数:14页 | 字数:24 千字 | 开本: 大16开

内容描述

ICS35040

L80.

备案号36831—2012

:

中华人民共和国密码行业标准

GM/T0004—2012

SM3密码杂凑算法

SM3cryptographichashalgorithm

2012-03-21发布2012-03-21实施

国家密码管理局发布

GM/T0004—2012

目次

前言…………………………

Ⅲ

范围………………………

11

术语和定义………………

21

符号………………………

31

常数与函数………………

42

初始值………………

4.12

常量…………………

4.22

布尔函数……………

4.32

置换函数……………

4.42

算法描述…………………

52

概述…………………

5.12

填充…………………

5.22

迭代压缩……………

5.33

杂凑值………………

5.44

附录资料性附录运算示例…………

A()5

示例………………

A.115

示例………………

A.227

Ⅰ

GM/T0004—2012

SM3密码杂凑算法

1范围

本标准规定了密码杂凑算法的计算方法和计算步骤并给出了运算示例

SM3,。

本标准适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成可

、,

满足多种密码应用的安全需求同时本标准还可为安全产品生产商提供产品和技术的标准定位以及

。,

标准化的参考提高安全产品的可信性与互操作性

,。

2术语和定义

下列术语和定义适用于本文件

。

21

.

比特串bitstring

具有或值的二进制数字序列

01。

22

.

大端big-endian

数据在内存中的一种表示格式规定左边为高有效位右边为低有效位即数的高阶字节放在存储

,,。

器的低地址数的低阶字节放在存储器的高地址

,。

23

.

消息message

任意有限长度的比特串本标准中消息作为杂凑算法的输入数据

,。

24

.

杂凑值hashvalue

杂凑算法作用于一条消息时输出的消息摘要比特串

()。

25

.

字word

长度为比特的组串

32()。

3符号

下列符号适用于本标准

。

ABCDEFGH个字寄存器或它们的值的串连

:8

i

B()第i个消息分组

:

CF压缩函数

:

FFj布尔函数随的变化取不同的表达式

:,j

GGj布尔函数随的变化取不同的表达式

:,j

IV初始值用于确定压缩函数寄存器的初态

:,

P压缩函数中的置换函数

0:

P消息扩展中的置换函数

1:

1

GM/T0004—2012

Tj算法常量随的变化取不同的值

:,j

m消息

:

m填充后的消息

′:

模运算

mod:

n消息分组个数

:

比特与运算

∧:32

比特或运算

∨:32

比特异或运算

췍「:32

比特非运算

:32

32比特算术加运算

+:mod2

k比特循环左移k比特运算

<<<:32

左向赋值运算符

←:

4常数与函数

41初始值

.

IV

=7380166f4914b2b9172442d7da8a0600a96f30bc163138aae38dee4db0fb0e4e

42常量

.

j

Tj79cc45190≤≤15

={j

7a879d8a16≤≤63

43布尔函数

.

XYZj

FFjXYZ췍췍0≤≤15

(,,)={XYXZYZj

(∧)∨(∧)∨(∧)16≤≤63

XYZj

GGjXYZ췍췍0≤≤15

(,,)={XYXZj

(∧)∨(∧)16≤≤63

式中XYZ为字

,,。

44置换函数

.

PXXXX

0()=췍(<<<9)췍(<<<17)

PXXXX

1()=췍(<<<15)췍(<<<23)

式中X为字

。

5算法描述

51概述

.

对长度为ll64比特的消息m杂凑算法经过填充迭代压缩和输出选裁生成杂凑值杂

(<2),SM3、,,

凑值输出长度为比特

256。

52填充

.

假设消息m的长度为l比特则首先将比特添加到消息的末尾再添加k个k是满

,“1”,“0”,

2

GM/T0004—2012

足lk的最小的非负整数然后再添加一个位比特串该比特串是长度l的二

+1+≡448(mod512)。64,

进制表示填充后的消息m′的比特长度为的倍数

。512。

例如对消息其长度l经填充得到比特串

::011000010110001001100011,=24,:

比特比特

42364

︷췍——췍——췍

011000010110001001100011100…0000…011000

췍—l的—二췍进制—表—示췍

53迭代压缩

.

531迭代过程

..

将填充后的消息m′按比特进行分组

512:

n

m′B(0)B(1)B(-1)

=…

其中nlk

=(++65)/512。

对m′按下列方式迭代

:

FORiTOn

=0-1

iii

V(+1)CFV()B()

=(,)

ENDFOR

i

其中CF是压缩函数V(0)为比特初始值IVB()为填充后的消息分组迭代压缩的结果

,256,,

n

为V()

。

532消息扩展

..

i

将消息分组B()按以下方法扩展生成个消息字WWWW′W′W′用于压缩函

1320,1,…67,0,1,…63,

数CF

:

i

将消息分组B()划分为个字WWW

a)160,1,…15。

FORjTO

b)=1667

WjPWjWjWjWjWj

췍1(-16췍-9췍(-3<<<15))췍(-13<<<7)췍-6

ENDFOR

FORjTO

c)=063

W′jWjWj

=췍+4

ENDFOR

533压缩函数

..

i

令ABCDEFGH为字寄存器SSSSTTTT为中间变量压缩函数V(+1)CF

,,,,,,,,1,2,1,2,=

ii

V()B()in计算过程描述如下

(,),0≤≤-1。:

i

ABCDEFGHV()

췍

FORjTO

=063

SSAETjj

1췍((<<<12)++(<<<(mod32)))<<<7

SSSSA

2췍1췍(<<<12)

TTFFjABCDSSW′j

1췍(,,)++2+

TTGGjEFGHSSWj

2췍(,,)++1+

DC

췍

CB

췍<<<9

BA

췍

3

GM/T0004—2012

ATT

췍1

HG

췍

GF

췍<<<19

FE

췍

EPTT

췍0(2)

ENDFOR

ii

V(+1)ABCDEFGHV()

췍췍

其中字的存储为格式左边为高有效位右边为低有效位

,big-endian,,。

54杂凑值

.

n

ABCDEFGHV()

췍

输出比特的杂凑值yABCDEFGH

256=。

4

定制服务

    推荐标准

    相似标准推荐

    更多>