SM3 密码杂凑算法是一种类似 SHA-256 的哈希算法,属于中国国家标准,本库仅包含一个 GmSSL 的 Fortran 接口及使用示例。
基于兴趣,我学习了杂凑算法,我做了一些尝试,但是 Fortran 缺乏无符号整形,不适合实现哈希算法,只能依靠 C Binding。
在开源代码中,GmSSL 以其完成度较高的代码质量,受到欢迎。完全使用 fpm 引入 GmSSL 代码将导致编译失败,
本库选择部分引入 GmSSL/SM3 算法代码,作为 SM3-Fortran
的依赖。Fortran 标准库已经有了 Hash 算法,
引入 SM3-Fortran
有以下意义:
- SM3 是国家标准的杂凑算法,GmSSL 是国人主导的项目,有着国人情怀;
- SM3 安全性与 SHA-256 相当;
SM3-Fortran
是一个轻量化接口包,Fortran-Stdlib/Hash 体量相对更大;SM3-Fortran
仅引入 SM3 算法,为其他算法的 Fortran Binding 提供实践参考。
中文 | English
- Fortran-lang/fpm >= 0.7.0:用于构建包和包分发;
- GNU/GCC >= 9.4.0:用于编译 C、Fortran 代码;
下载或克隆仓库到本地后,可使用 fpm 编译代码:
cd SM3-Fortran
fpm run --example demo # 运行示例代码
fpm build --profile release
fpm build --profile release --flag "-DSM3_SSE3" # 启动 SSE3 优化
也可以将 SM3-Fortran
添加到自建 fpm 项目:
[dependencies]
sm3-fortran = { git = "https://gitee.com/fortran-stack/sm3-fortran" }