【Miracl密码库】国密算法SM3复现
国密算法SM3的官方文档描述
http://www.gmbz.org.cn/main/postDetail.html?id=20180724105928
这是2018-07-24公布的文件《GM/T 0004-2012 SM3密码杂凑算法标准英文文本发布》
本文参考GitHub源码完成
https://github.com/lookingforfanyunfei/SMX_Test/tree/master/SMX_Test
该源码项目给出了不同环境下的SM3密码实现,本文在Macbook环境下实现,采用的是arm64参数。
以下是SM3密码实现的过程
(SM3算法的实现过程没有用到Miracl密码库,在SM2算法实现的过程中,需要用到Miracl密码库,所以放在了同一个专题下面。)
SM3算法的相关参数,以及定义的相关运算
1、消息扩散

消息扩散算法BiToW获得前面68个字,WToW1算法获得后面64个字,总共132个字,完成消息扩散。
2、CF压缩函数,输出256比特的哈希值
SM3对CF压缩函数的描述

在初始化的时候,CF压缩函数给出了对应的初始值,可从文档中查找。
3、加辅助函数:大端序列化
如果CPU是小端序列,则需要大端序列化
懒得复制了,去公众号看吧