本帖最后由 Aligagago 于 2022-5-6 09:33 编辑
#技术资源# #申请原创#
SM3 是由国家密码管理局于 2010年12月17日发布,相关标准为“GM/T0004-2012 《SM3 密码杂凑算法》 ”其算法公开。在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其安全性及效率与 SHA-256 相当。
-
类型 | 消息长度(bits) | 块大小(bits) | 单词长度(bits) | 消息摘要长度(bits) | SHA-1 | <2^64 | 512 | 32 | 160 | SHA-224 | <2^64 | 512 | 32 | 224 | SHA-256 | <2^64 | 512 | 32 | 256 | SM3 | <2^64 | 512 | 32 | 256 | SHA-384 | <2^128 | 1024 | 64 | 384 | SHA-512 | <2^128 | 1024 | 64 | 512 | SHA-512/224 | <2^128 | 1024 | 64 | 224 | SHA-512/256 | <2^128 | 1024 | 64 | 256 |
功能特性:
功能 | 描述 | 填充模式 | 支持硬件填充和软件填充。 SM3以数据块(512bits)进行计算, 在消息末尾进行填充,使消息长度满足对512取模后余数为448。 记消息M位长L,在M后补充一位Bit1,然后补充K位Bit0。 满足:L+1+K = 448 mod 512 (余下 64bits 为 消息长度2^64) | 初始化模式 | 支持硬件初始化和软件初始化。 如果用户选择硬件初始化,硬件会自动填充第一个数据块的初始值。 如果用户选择软件初始化,则需要手动将 SM3 算法所需的初始值写入第一个数据块的 IV 寄存器中。 记消息M被分为n个数据块,摘要初始值H0与n1块计算得到H1,n次迭代后生成Hn即为消息摘要值。 | 端模式 | 支持大端模式和小端模式。 Big endian:第一个字节为最高字节,按照从低位地址到高位地址的顺序存放高位字节到低位字节。 Little endian:第一个字节为最低字节... Message: 0x616263 Write Message: 0x61626300(小端) 0x00636261(大端) |
函数描述:函数 | 描述 | SM3_Config | 初始化 SM3 参数, 初始化模式(IVinit),存储模式(endian) | SM3_Update | 更新 SM3 计算值(内部调用,仅 SM2 使用) | SM3_Final | 计算最后信息块(内部调用,仅 SM2 使用) | SM3_Calc | 输入: 消息,输出: 摘要值(32Bytes) |
|