赞
踩
本文是本系列第二篇,我们将通过分析一个 SM3 的开源软件实现,来进一步了解算法的实现流程和软件实现思路
在 GitHub 上搜索 SM3 可以得到很多,各种语言实现的结果(当然也有 Verilog,比较少就是了)。
这里我们选择点赞数最高的 GmSSL,支持国密SM2/SM3/SM4/SM9/ZUC/SSL的OpenSSL分支
关于GmSSLgmssl.org在以下目录可以找到独立的 SM3 实现源代码
guanzhi/GmSSLgithub.comSM3 的实现都在 sm3.c 中。sm3_hmac.c 中实现的是基于 sm3 实现的上层加密认证协议,这里我们暂不研究。
PS:笔者看了下,目前的代码相比笔者当时研究的代码已经有了一些改动,但应该没有太大区别,还是以我当时的代码为准。
准备头文件,运行还需要两个头文件。从 openssl/sm3.h ; internal/byteorder.h 下载头文件
因为我们只需要运行 SM3 这部分,所以可以直接把头文件下载后放到当前目录,并修改 SM3.c 的头文件 include 部分。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。