国密算法和GmSSL介绍
GmSSL是一個(gè)開源的密碼工具箱,支持SM2/SM3/SM4/SM9/ZUC等國密(國家商用密碼)算法、SM2國密數(shù)字證書及基于SM2證書的SSL/TLS安全通信協(xié)議,支持國密硬件密碼設(shè)備,提供符合國密規(guī)范的編程接口與命令行工具,可以用于構(gòu)建PKI/CA、安全通信、數(shù)據(jù)加密等符合國密標(biāo)準(zhǔn)的安全應(yīng)用。GmSSL項(xiàng)目是OpenSSL項(xiàng)目的分支,并與OpenSSL保持接口兼容。因此GmSSL可以替代應(yīng)用中的OpenSSL組件,并使應(yīng)用自動(dòng)具備基于國密的安全能力。GmSSL項(xiàng)目采用對商業(yè)應(yīng)用友好的類BSD開源許可證,開源且可以用于閉源的商業(yè)應(yīng)用。
? ? ? ?為了保障商用密碼的安全性,國家商用密碼管理辦公室制定了一系列密碼標(biāo)準(zhǔn),包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖沖之密碼算法(ZUC)那等等。其中SM1、SM4、SM7、祖沖之密碼(ZUC)是對稱算法;SM2、SM9是非對稱算法;SM3是哈希算法。目前,這些算法已廣泛應(yīng)用于各個(gè)領(lǐng)域中。其中SM1、SM7算法不公開,調(diào)用該算法時(shí),需要通過加密芯片的接口進(jìn)行調(diào)用。
????SM2:基于橢圓曲線密碼(ECC)的公鑰密碼算法標(biāo)準(zhǔn),提供數(shù)字簽名,密鑰交換,公鑰加密,用于替換RSA/ECDSA/ECDH?等國際算法
????SM3:消息摘要算法,哈希結(jié)果為?256 bits,用于替換?MD5/SHA1/SHA256?等國際算法
????SM4:對稱加密算法,密鑰長度和分組長度均為?128 bits,主要用于無線局域網(wǎng)標(biāo)準(zhǔn),用于替換?DES/AES?等算法
?
????國密證書:這里的國密證書指的是使用國密算法(SM2-with-SM3)的標(biāo)準(zhǔn)?X509?格式證書,證書使用?SM3?作為哈希算法,使用?SM2?作為數(shù)字簽名算法
????國密?SSL:采用國密算法,符合國密標(biāo)準(zhǔn)的安全傳輸協(xié)議,也就是?SSL/TLS?協(xié)議的國密版本
GmSSL的編譯與安裝
GmSSL工程使用典型的Makefile管理工程,采用典型的linux C/C++程序編譯安裝方法
即可編譯安裝。
./config
make
make?test
make?install
編譯后三個(gè)功能組件:
Gmssl使用
gmssl help?可以查看具體的命令,?可以看到gmssl在原來openssl的基礎(chǔ)上,提供了國密的算法的支持。
??????Gmssl sms4 -help?子命令的使用方法
1)gmssl version
2)?對稱加解密SM4
????加密
?????gmssl sms4 -e?-in <yourfile> -out <yourfile>.sms4
????解密(標(biāo)準(zhǔn)輸出到屏幕,可以重定向)
????????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)導(dǎo)出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
相關(guān)文獻(xiàn)或者資源:
總結(jié)
以上是生活随笔為你收集整理的国密算法和GmSSL介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反射创建对象_如何应用Java反射技术灵
- 下一篇: 【算法设计与分析】07 算法的数学基础