OpenSSL 1.1.1 国密SM2 SM3 SM4 SM9 ZUC EEA3 EIA3 SM2 +SM3签名 源码 Demo 下载 OpenSSL iOS端库下载
最近因为需要研究国密,所以寻找加密库,demo就很重要了,这里记录下。
直接进入正文,附上OpenSSL GitHub官网的下载地址,最新的已经支持国密了。
https://github.com/openssl/openssl
进入GitHub 下载OpenSSL demo,你会发现移动端 安卓,iOS的库呢?What F ?
网上找了很多,最新的基本没有。基本需要自己编译OpenSSL,这个过程很痛苦,你可以试试!
最后我用了一个大神的脚本,胜利解决打包成libcrypto.a libssl.a 文件,支持armv7,arm64,armv7s,i386,x86_64,附上大神GitHub链接
https://github.com/x2on/OpenSSL-for-iPhone
这里还有个插曲,以前用过支付宝里的OpenSSL,来进行RSA签名,验证签名,加解密。最近下了SDK发现最新的阿里支付SDK没找到SM2文件。于是又断了一条路。(其实OpenSSL提供一些编译指令,可以摒弃一些无用的算法,比如no sm2.这样减少libssl,libcrypto包大小)
库有了,查看SM2,SM3,SM4 加密OpenSSL的代码,发现很好很强大
/*
SM2 signature generation. Assumes input is an SM3 digest
*/
int SM2_sign(int type, const unsigned char *dgst, int dgstlen,
unsigned char *sig, unsigned int *siglen, EC_KEY *eckey);
/*
*SM2 signature verification. Assumes input is an SM3 digest
*/
int SM2_verify(int type, const unsigned char *dgst, int dgstlen,
const unsigned char *sig, int siglen, EC_KEY *eckey);
int SM2_encrypt(const EC_KEY *key,
const EVP_MD *digest,
const uint8_t *msg,
size_t msg_len,
uint8_t *ciphertext_buf, size_t *ciphertext_len);
int SM2_decrypt(const EC_KEY *key,
const EVP_MD *digest,
const uint8_t *ciphertext,
size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len);
每个参数没有备注,就问你怕不怕。API的话,你可以去
https://www.feistyduck.com/library/openssl-cookbook/
没账号的话,需要注册登录。注册腾讯邮箱可以,新浪邮箱半天都没收到确认链接。然后可以下载,或者在线查看相关英文Api。然后呢发现没有SM2 Api的(可能我方法有误,你可以找找,目前还在摸着石头过河中)。
OpenSS库,说完了。说说SM2,SM3,SM4 加解密。网上代码层出不穷,可是能用的没有几个。好不容易能用了,然后各种加密解密不成功,或者签名,验证签名失败。只能自己慢慢摸索了,好不容易搞通了加解密,签名和验证签名。这里附上demo的链接。
iOS demo SM2,SM4 加密算法,SM2+SM3签名
https://download.csdn.net/download/asia_zhangqq/10835061
OpenSSl 支持国密 1.1.1版本 iOS打包最新版本,支持armv7,arm64,armv7s,i386,x86_64
https://download.csdn.net/download/asia_zhangqq/10835116
最后奉上最新研究国密大招,包含SM2加解密,SM2+SM3 签名,验证签名,SM4加解密,ZUC包括EEA3 EIA3加密。同时兼容armv7,arm64,armv7s,i386,x86_64架构。以下链接是demo地址。
https://download.csdn.net/download/asia_zhangqq/10922992
奉上最新的SM9算法。代码是基于GMSSL的国密SM9算法。包括签名,密钥交换,加密,解密。demo直接运行就可以,有相关测试数据。
https://download.csdn.net/download/asia_zhangqq/10925337
看到这里你可能纳闷,OpenSSL的SM9国密算法呢,不好意思还没有。所以采用GMSSL的SM9来代替。但是这个库编译armv7,arm64,armv7s,i386,x86_64架构也有一序列问题。
这里是官网:http://gmssl.org。一直维护更新在。
然后issue的话你可以看GMSSL的git官网问题,目前遇到卡住问题就在issue里的。
这是GMSSL的github链接:https://github.com/guanzhi/GmSSL
然后呢除了GMSSL这个,还有一些三方的商用国密库,比如TASSL的。不采用商用库怕版权问题。
有问题的,欢迎评论。
能解决你问题的话,欢迎打赏。(毕竟国密研发的商用居多,像我这样公开的很少)