首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java技术编程

    SM? SM1? SM2? SM3? SM4?

    最近看了一个项目的代码,用到了SM2,SM3,SM4,瞬间懵逼,一会用SM2,一会用SM3,一会又用SM4,SM??? ? 简单来说,SM2,SM3,SM4 是国家密码局认定的国产密码算法,当然除了这几个算法,还有SM1,SM7,SM9,祖冲之密码算法等。 了解了SM2, SM3, SM4这些算法之后,在我们的系统中就可以应用这些算法来对传输的报文进行加解密;一个简单的流程图如下所示: ? 如果你数学够屌,文档给你准备好了,公众号回复【SM】即可下载。 ? SM2 java实现 既然SM2算法那么厉害,接下来我们就使用Java来实现下吧。 代表国密SM2推荐参数定义的椭圆曲线: SM2P256V1Curve sm2P256V1Curve = new SM2P256V1Curve(); BigInteger sm2N = sm2P256V1Curve.getOrder

    3K31发布于 2021-03-04
  • 来自专栏开源技术小栈

    GmSSL支持SM2SM3SM4SM9SSL国产商用密码开源库

    概述 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具 Generate SM2 keypair sm2sign Generate SM2 signature sm2verify Verify SM2 signature Generate SM3 hash sm3hmac Generate SM3 HMAC tag sm4 Encrypt or decrypt with SM4 Generate SM9 private key sm9sign Generate SM9 signature sm9verify Verify SM9 gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der SM2加密及解密 $ gmssl sm2keygen -pass 1234 -out sm2

    2.5K10编辑于 2024-07-05
  • 来自专栏区块链入门

    【易错概念】国密算法SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、ZUC

    众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。 其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。 image 其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用;比较少人了解这些算法,在这里对这些国密算法做简单的科普 1 SM1对称密码 SM1 算法是分组密码算法,分组长度为 在SM2,SM9标准中使用。 SM4算法的具体描述和示例见SM4标准。

    12.7K22发布于 2019-07-10
  • 关于SM2、SM3、SM4、SM9这四种国密算法

    以下是一个关于SM2、SM3、SM4、SM9这四种国密算法的表格:算法名称类型描述发布时间应用场景SM2非对称加密算法基于椭圆曲线密码算法,包含加解密算法、数字签名算法,安全强度高于RSA 2048位, -主要用于数字签名和消息完整性验证SM4分组加密算法与AES算法具有相同的密钥长度、分组长度(128bit),算法未公开2012年3月21日适用于密码应用中使用分组密码的需求SM9基于标识的非对称密码算法使用椭圆曲线实现基于标识的数字签名算法 SM3类型:哈希算法。用途:主要用于数字签名和消息完整性验证。它是中国国家密码算法标准之一。特点:生成256位的哈希值。使用32轮的迭代运算,依赖于消息扩展、压缩函数、消息混淆等步骤。 SM4类型:分组密码算法,对称加密算法。用途:可用于替代DES/AES等国际密码算法,实现数据加密和解密。特点:明文、密文以及密钥长度均为128位。 SM9类型:基于标识的非对称密码算法。用途:在物联网(IoT)环境中实现数据安全和隐私保护,支持数字签名、身份验证和密钥交换等操作。

    2.6K10编辑于 2024-11-04
  • 来自专栏m0w3n

    一个支持国密SM2SM3SM4SM9ZUCSSL的密码工具箱

    no-zuc $ make $ sudo make install 安装之后可以执行gmssl命令行工具检查是否成功 $ gmssl version GmSSL 2.0 - OpenSSL 1.1.0d SM4 摘要 $ gmssl sm3 <yourfile> SM3(yourfile)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0 生成SM2密钥并签名 $ gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 \ -out signkey.pem $ gmssl -pubin -inkey vrfykey.pem \ -in <yourfile> -sigfile <yourfile>.sig 生成SM2私钥及证书请求 $ gmssl ecparam -genkey -name sm2p256v1 -text -out user.key $ gmssl req -new -key user.key -out user.req 查看证书请求内容: $ gmssl req

    3K10发布于 2020-02-28
  • 来自专栏小工匠聊架构

    PKI - 一文读懂SM1、SM2、SM3、SM4等国密算法

    主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 国密算法是指国家密码管理局认定的一系列国产密码算法,包括SM1-SM9以及ZUC等。 其中 SM1、SM4、SM5、SM6、SM7、SM8、ZUC等属于对称密码, SM2、SM9等属于公钥密码 (非对称加密) SM3属于单向散列函数。 目前我国主要使用公开的SM2、SM3、SM4作为商用密码算法。 其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用 SM2是基于椭圆曲线的公钥密码算法,包括用于数字签名的SM2-1、用于密钥交换的SM2-2和用于公钥密码的SM2-3。 以下是对SM2、SM3和SM4算法安全性的进一步分析: SM2算法的安全性 SM2算法是一个基于椭圆曲线的公钥密码算法,其安全性主要依赖于椭圆曲线离散对数问题的难度。

    34.8K13编辑于 2024-05-25
  • 来自专栏IT杂症

    SM4

    sm4 无线局域网产品使用的 SMS4 密码算法 本算法是一个分组算法。该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算 法与密钥扩展算法都采用 32 轮非线性迭代结构。

    64030编辑于 2023-10-18
  • 来自专栏全栈程序员必看

    sm2和sm4加密算法浅析

    sm2和sm4加密算法浅析 一: SM2 简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 ,SM2为非对称加密,基于ECC。该算法已公开。 ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM2和RSA算法比较 SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小 ①:加密算法以及流程: 输入:需要发送的消息为比特串M,klen为M的比特长度。 C中取出比特串C2,计算M′ = C2 ⊕t 6.计算u = Hash(x2 ∥ M′ ∥ y2),从C中取出比特串C3,若u ̸= C3,则报错并退出 7.输出明文M′ 解密算法流程: ③:SM2 简介:SM4由国家密码管理局于2012年3月21日发布,SM4 无线局域网标准的分组数据算法。

    5.7K21编辑于 2022-11-08
  • 来自专栏全栈程序员必看

    sm4 前后端 加密_sm4加密

    前言 项目里需要用到sm4加密,在这里记录一下(springboot)。 { private static Logger logger = LoggerFactory.getLogger(SM4Util.class); private static final String PROVIDER_NAME = “BC”; public static final String ALGORITHM_NAME = “SM4”; public static final String ALGORITHM_NAME_ECB_PADDING = “SM4/ECB/PKCS5Padding”; public static final String ALGORITHM_NAME_CBC_PADDING = “SM4/CBC/PKCS5Padding”; public static final String DEFAULT_KEY = “random_seed”; public static final

    1.1K30编辑于 2022-11-08
  • 来自专栏全栈程序员必看

    SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂sm2算法的使用

    网上有很多网友问算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下? 这里分享个自己用QT造的一个小工具,简单好用,同时也增加支持了SM3、SM4国密算法。且有详细的过程日志,可以保存为文件。用来对SM2国密算法做加解密和签名,验签,秘钥生成再合适不过了。 完整版的下载: sm2国密算法工具完整版,包含sm2,sm3和sm4-QT文档类资源-CSDN下载 工具源码的下载: sm2国密算法加解密、签名、验签QT工具源码(包含sm2,sm3和sm4源代码)-C 查阅《GMT 0003-2012》这份标准文档,有SM2算法的设计背景知识供解读。 SM2算法是ECC算法的一种,相当于是设计了一条ECC命名曲线。 为什么要大力推广国密算法,当然是因为安全了。

    2.7K10编辑于 2022-09-29
  • harmony-utils之SM4,SM4加解密

    harmony-utils之SM4,SM4加解密harmony-utils 简介与说明harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用 算法简介SM4是中国自主研发的商用对称加密算法,由国家密码管理局于2006年发布,2012年成为国家密码行业标准(GM/T 0002-2012)。 作为中国密码体系(SM系列)的核心组件,SM4广泛应用于金融支付、电子政务、物联网等领域,满足国产密码合规要求。 SM4 应用场景金融支付:在银行卡交易、移动支付及网上银行中加密敏感数据(如交易金额、账户信息),确保传输安全并符合中国金融行业密码合规要求;电子政务:用于电子身份证、政务系统数据传输加密,结合SM2签名算法实现身份认证与数据完整性保护 ; //加密let decryptDataBlob2 = SM4.decryptGCMSync(encryptDataBlob2, symKey, gcmParams!)

    37700编辑于 2025-06-29
  • harmony-utils之SM3,SM3加解密

    harmony-utils之SM3,SM3工具类harmony-utils 简介与说明harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用 SM3 应用场景数字签名:与SM2非对称算法配合使用,对电子合同、政务文件等生成哈希摘要并签名,确保数据完整性和不可抵赖性;金融安全:用于网上银行交易验证、支付报文完整性保护,国内超80%金融机构在关键系统中部署该算法 API方法与使用digest SM3摘要let str1 = "鸿蒙技术交流QQ群:1029219059";let digest1 = await SM3.digest(str1);LogUtil.error digest3 = SM3.digestSync(str1, 'base64');LogUtil.error(`摘要,同步2: ${digest3}`);digestSegment SM3分段摘要let ;let symKey = CryptoUtil.generateSymKeySync("HMAC|SM3");let digest1 = await SM3.hmacSegment(str2, symKey

    57210编辑于 2025-06-29
  • 来自专栏大龄程序员的人工智能之路

    详解国密SSL ECC_SM4_SM3套件

    本文主要总结国密SSL ECC_SM4_SM3密码套件的实现需要注意的地方。 因为国密SSL是以TLS 1.1标准为蓝本制定的,所以这里主要总结国密SSL协议和标准的TLS协议之间的区别。 在ECC_SM4_SM3套件中,非对称加密算法为SM2,对称加密算法为SM4,摘要算法为SM3。 注意,PRF算法和TLS 1.2类似,而不是像TLS 1.1那样,实现时需要注意: ? 具体过程为: 服务器发送SM2公钥(在加密证书中)到客户端。 客户端生成Pre-Master Secret,用SM2公钥加密后传送给服务器。 关于SM2加密 Pre-Master Secret,请参考我之前的文章: 详解国密SM2的加密和解密 Server Key Exchange消息中包含的数据如下: ? 后来才明白,对于ECC_SM4_SM3套件而言,会话密钥其实主要由客户端决定。对于客户端而言,这个消息不处理也没有问题,所以我把这个消息的处理略过了。

    7.9K10发布于 2020-04-08
  • harmony-utils之SM2,SM2加解密

    harmony-utils之SM2,SM2加解密harmony-utils 简介与说明harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用 SM2 应用场景SM2 算法在我国的金融、政务、电力等关键领域有着广泛的应用。 在实际应用中,SM2 算法通常会与 SM3、SM4 等国密算法配合使用。一般用 SM4 对数据内容进行加密,使用 SM3 对内容进行摘要,再使用 SM2 对摘要进行签名。 接收端先用 SM2 对摘要进行验签,验签成功后,对发送过来的内容进行 SM3 摘要,查看生成的摘要和验签后的摘要是否一致,以防止篡改。 LogUtil.error(`priKeyStr3: ${priKeyStr3}`);getSM2PubKey 获取转换SM2公钥, 将C1C2C3格式的SM2公钥转换为鸿蒙所需的ASN.1格式//16

    72400编辑于 2025-06-29
  • 来自专栏Python 爬虫

    爬虫逆向基础,认识 SM1-SM9、ZUC 国密算法

    SM2、SM3 、SM4、SM7、SM9、ZUC(祖冲之加密算法)等,SM 代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。 SM1 和 SM7 的算法不公开,其余算法都已成为 ISO/IEC 国际标准。 【03x02】SM2 椭圆曲线公钥加密算法 SM2 为椭圆曲线(ECC)公钥加密算法,非对称加密,SM2 算法和 RSA 算法都是公钥加密算法,SM2 算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换 ,目前大多库仅实现了 SM2、SM3、SM4 三种密算法。 ,目前支持 SM2、SM3 和 SM4,需要注意的是,SM2 非对称加密的结果由 C1、C2、C3 三部分组成,其中 C1 是生成随机数的计算出的椭圆曲线点,C2 是密文数据,C3 是 SM3 的摘要值

    3.2K20发布于 2021-11-09
  • 来自专栏Pou光明

    国密算法SM3与SM4简介与应用

    一、国密SM3与SM4 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。 不懂也没关系,以后别人说SM2、SM3、SM4知道它们是干啥的就行。这次主要和大家从简单的SM3、SM4说起。 SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。 SM4算法:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。 _state *ctx = ALLOC_OBJ(SM3_state, 1); SM3_Init(ctx); SM3_Update(ctx, msgbuf, sizeof(msgbuf)-1); SM3

    11.2K30发布于 2020-05-29
  • 来自专栏Java菜鸡冲冲冲!

    SM4加密解密

    1、SM4简介 https://baike.baidu.com/item/SM4.0/3901780 2、引入SM4的依赖包 在pom.xml中增加SM4的依赖包。 //身份证、手机号SM4加密存储 sysBfinfo.setLeaderIdcard(SM4Util.encryptEcb(SM4Util.hexKey,sysBfinfo.getLeaderIdcard ())); sysBfinfo.setPhone(SM4Util.encryptEcb(SM4Util.hexKey,sysBfinfo.getPhone())); //身份证、手机号SM4解密 String leaderIdcard = SM4Util.decryptEcb(SM4Util.hexKey,sftSysBfinfoBo.getLeaderIdcard()); String phone = SM4Util.decryptEcb (SM4Util.hexKey,sftSysBfinfoBo.getPhone()); 4、SM4Util工具类 import cn.hutool.core.util.HexUtil; import org.bouncycastle.jce.provider.BouncyCastleProvider

    4.1K01发布于 2021-02-03
  • 来自专栏独行猫a的沉淀积累总结

    sm2,sm3,sm4国密算法的纯c语言版本,使用于任何嵌入式平台

    主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。 SM2,SM3,SM4的相关文档可以参考如下链接: http://218.241.108.63/wiki/index.php/首页 SM2,SM3,SM4的C代码如下:使用了openssl开源库。 http://files.cnblogs.com/files/TaiYangXiManYouZhe/Sm2_sm3_sm4_c%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0.zip 然后需要新建一个sm2.c文件、sm2.h,用于实现sm2功能函数;一个sm3.c文件、一个sm3.h文件,用于实现sm3功能函数(之所以要增加sm3的功能是因为sm2算法中需要sm3计算hash值功能

    16.4K265发布于 2020-08-04
  • 来自专栏独行猫a的沉淀积累总结

    SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂国密算法的使用

    网上有很多网友问国密算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下? 这里分享个自己用QT造的一个小工具,简单好用,同时也增加支持了SM3、SM4国密算法。且有详细的过程日志,可以保存为文件。用来对SM2国密算法做加解密和签名,验签,秘钥生成再合适不过了。 国密sm2使用的是固定的值"1234567812345678"。 a,b,xG和yG是椭圆曲线算法选定的椭圆曲线参数。后面有说明。这几个都是个固定值。 xA和yA这个就是公钥的前后两段。 查阅《GMT 0003-2012》这份标准文档,有SM2算法的设计背景知识供解读。 SM2算法是ECC算法的一种,相当于是设计了一条ECC命名曲线。 为什么要大力推广国密算法,当然是因为安全了。

    5.9K20发布于 2021-10-09
  • 来自专栏python-爬虫

    python实现AESDESRSAMD5SM2SM43DES加密算法模板汇总

    /SM4 GMSSL模块介绍 GmSSL是一个开源的加密包的python实现,支持SM2/SM3/SM4等国密(国家商用密码)算法、项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用 ) sign = sm2_crypt.sign(data, random_hex_str) # 16进制 assert sm2_crypt.verify(sign, data) # 16进制 SM4 初始化CryptSM4 from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT key = b'3l5butlj26hvv313' value .crypt_ecb(value) # bytes类型 crypt_sm4.set_key(key, SM4_DECRYPT) decrypt_value = crypt_sm4.crypt_ecb( key, SM4_ENCRYPT) encrypt_value = crypt_sm4.crypt_cbc(iv , value) # bytes类型 crypt_sm4.set_key(key, SM4

    5.7K30发布于 2020-11-24
领券