# 背景
工作中针对接口信息安全这块使用过很多算法,从小白的MD5、SHA256、Hmac,到RSA1024、RSA2048,再到现在的国密算法,都是在不断的打怪升级,然后沉淀。目前生产用的就是国密SM2加签,为此也调研研究过很多的库:
openssl
miracl
gmssl
mbedTLS
bouncycastle
1
2
3
4
5
2
3
4
5
这些都是我封装过,用于生产的库,目前是移动端(openssl or mbedTLS)实现,后端Java(bouncycastle)实现搭配使用,因为封装SDK供第三方使用的时候,其它APP可能也用了openssl之类的,就会有冲突,就得openssl或者mbedTLS换着来。
# Why
为什么要从零开始实现国密算法,有以下几点原因吧
- 将这些年使用国密算法的经验进行总结
- 将国密算法转换为自己完全掌控的
- 第三方库太复杂了,云里雾里的感觉很不好
- 第三方库编译太麻烦了,库文件还比较大
- 第三方库优化没有方向
# 参考及Copy
本文大部分代码都Copy自gmssl-v3-dev,相当于是自己照着写了一遍,非常感谢gmssl的作者。
openssl: https://github.com/openssl/openssl (opens new window)
gmssl-v3-dev: https://github.com/guanzhi/gmssl-v3-dev (opens new window)
# 关于源代码
源代码仓库地址如下
未经本人同意,禁止转载!
大数转换 →