什么是国密算法
原文链接:https://www.cnblogs.com/zy09/p/16086365.html
https://blog.csdn.net/my_miuye/article/details/123162707
介绍
国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。目前SM1算法没有公开,只能集成在芯片中。目前应用较多的是SM2、SM3和SM4算法,这三者用法不一。
SM2属于非对称加密算法,使用公钥加密,私钥解密,在安全性和运算速度方面要优于RSA算法。
SM3属于不可逆加密算法,类似于md5,常用于签名。
SM4属于对称加密算法,可用于替代DES/AES
等国际算法, SM4算法与AES算法具有相同的密钥长度和分组长度,都是128位。
下面以py3来记录这几种算法的使用。
2、分类
2.1 SM1算法
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
2.2 SM2算法
SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,采用ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准。
SM2包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。
SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
在实际使用中,国密局推荐使用素数域256 位椭圆曲线,其曲线方程为y^2= x^3+ax+b(其中p是大于3的一个大素数,n是基点G的阶,Gx、Gy 分别是基点G的x与y值,a、b是随圆曲线方程y^2= x^3+ax+b的系数)。
2.3 SM3算法
SM3哈希算法是我国自主设计的密码哈希算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
为了保证哈希算法的安全性,其产生的哈希值的长度不应太短,例如MD5输出128比特哈希值,输出长度太短,影响其安全性,SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
2.4 SM4算法
SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。
要保证一个对称密码算法的安全性的基本条件是其「具备足够的密钥长度」,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。
2.5 SM7算法
SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。
SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。
2.6 SM9算法
SM9标识密码算法不需要申请数字证书,标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。
2.7 ZUC算法
ZUC祖冲之算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。
3、代码测试(Go)
go get -u github.com/tjfoc/gmsm
main.go
import (
"bytes"
"crypto/rand"
"fmt"
"github.com/tjfoc/gmsm/sm2"
"github.com/tjfoc/gmsm/sm3"
"log"
)
func main() {
service.SM3()
service.SM2()
}
func SM2 (){
content := []byte("hello world")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2024-03-04 mssql排序order by42000报错解决
2024-03-04 SQL报错:order by不能直接出现在union的子句中
2024-03-04 Sql中的coalesce函数用法
2024-03-04 sum()与case的合用案例求数量
2024-03-04 SQL中的开窗函数
2024-03-04 SQL 计算累计和 sum() over( partition by order by )
2023-03-04 ICSharpCode.SharpZipLib 初级使用