国密算法和GmSSL介绍

GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。

       为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中。其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

•   SM2:基于椭圆曲线密码(ECC)的公钥密码算法标准,提供数字签名,密钥交换,公钥加密,用于替换RSA/ECDSA/ECDH 等国际算法

•   SM3:消息摘要算法,哈希结果为 256 bits,用于替换 MD5/SHA1/SHA256 等国际算法

•   SM4:对称加密算法,密钥长度和分组长度均为 128 bits,主要用于无线局域网标准,用于替换 DES/AES 等算法

 

•   国密证书:这里的国密证书指的是使用国密算法(SM2-with-SM3)的标准 X509 格式证书,证书使用 SM3 作为哈希算法,使用 SM2 作为数字签名算法

•   国密 SSL:采用国密算法,符合国密标准的安全传输协议,也就是 SSL/TLS 协议的国密版本

GmSSL的编译与安装

GmSSL工程使用典型的Makefile管理工程,采用典型的linux C/C++程序编译安装方法

即可编译安装。

./config

make

make test

make install

编译后三个功能组件:

  1. Libcrypto: 加密
  2. Libssl: ssl功能
  3. Openssl工具

Gmssl使用

gmssl help 可以查看具体的命令, 可以看到gmssl在原来openssl的基础上,提供了国密的算法的支持。

      Gmssl sms4 -help 子命令的使用方法

1)gmssl version

2) 对称加解密SM4

    加密

     gmssl sms4 -e -in <yourfile> -out <yourfile>.sms4

    解密(标准输出到屏幕,可以重定向)

        gmssl sms4 -d -in <yourfile>.sms4

3) 生成SM3摘要

      gmssl sm3 <yourfile>

      gmssl sm3 /etc/fstab

      输出:SM3(/etc/fstab)= fa221b32c629777672765ba50b085e94ec65e5e49815bc7c5d4da011f6e69939

4)sm4 加解密

A)生成SM2私钥

gmssl sm2 -genkey -sms4 -out sm2.pem

B)导出SM2公钥

gmssl sm2 -in sm2.pem -pubout -out sm2Pub.pem

C)加密解密

gmssl sm2utl -encrypt -in testfile -pubin -inkey  sm2Pub.pem -out jiami.out

gmssl sm2utl -decrypt -in jiami.out -inkey sm2.pem -out testfile.out

相关文献或者资源:

  1. http://gmssl.org/
  2. https://github.com/guanzhi/GmSSL
  3. https://www.gmssl.cn/gmssl/index.jsp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hNicholas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值