转:https://www.jianshu.com/p/a1c3ee349345
OpenSSL项目最近6个月添加了许多新特性, 包括对中国SM2/SM3/SM4算法的支持:
SM2椭圆曲线:https://github.com/openssl/openssl/pull/4793
SM3哈希摘要:https://github.com/openssl/openssl/pull/4616
SM4对称加密:https://github.com/openssl/openssl/pull/4552
参考: 中国国家密码管理局制定的商业密码算法标准
《GM/T 0006-2012 密码应用标识规范》定义国密算法OID标识
《GB/T 32907-2016 SM4分组密码算法》(原GM/T 0002-2012)
《GB/T 329??-2016 SM2椭圆曲线公钥密码算法》(原GM/T 0003-2012)
《GB/T 32905-2016 SM3密码杂凑算法》(原GM/T 0004-2012)
下载源码, 编译, 以及验证步骤
下载源码
https://www.openssl.org/source/openssl-1.1.1-pre4.tar.gz
https://www.openssl.org/source/openssl-1.1.1-pre5.tar.gz
解压缩
tar xzvf openssl-1.1.1-pre4.tar.gz
tar xzvf openssl-1.1.1-pre5.tar.gz
编译步骤
cd openssl-1.1.1-pre5
./config
make
本地安装(可选步骤)
sudo make install
配置LD_LIBRARY_PATH并检查openssl可执行程序版本号
$ export LD_LIBRARY_PATH=`pwd`
$ ./apps/openssl version
OpenSSL 1.1.1-pre5 (beta) 17 Apr 2018
检查 SM3 哈希校验和
$ echo -n "abc" | ./apps/openssl dgst -SM3
(stdin)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
检查椭圆曲线是否包含SM2
$ ./apps/openssl ecparam -list_curves | grep SM2
SM2 : SM2 curve over a 256 bit prime field
检查对称算法
./apps/openssl enc -ciphers
-sm4
-sm4-cbc
-sm4-cfb
-sm4-ctr
-sm4-ecb
-sm4-ofb
查找SM4对称加密API接口文档
???
SM4-自测试数据
测试SM4-ECB电子密码本模式, 选取AES-128-ECB作为参考