sm4 无线局域网产品使用的 SMS4 密码算法 本算法是一个分组算法。该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算 法与密钥扩展算法都采用 32 轮非线性迭代结构。
前言 项目里需要用到sm4加密,在这里记录一下(springboot)。...javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security....*; import java.util.Arrays; public class SM4Util { private static Logger logger = LoggerFactory.getLogger...”; 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 =
我们在使用加密算法时,有必要选择使用国密算法进行加密 ---- 一、国密SM4是什么? 国密即国家密码局认定的国产密码算法。 主要有SM1,SM2,SM3,SM4。...SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。...//key必须是16字节,即128位 final static String key = "sm4demo123456789"; //指明加密算法和秘钥 static SymmetricCrypto sm4...SymmetricCrypto sm4 = new SymmetricCrypto("SM4/ECB/PKCS5Padding"); 2.3 使用SmUtil快速创建SymmetricCrypto对象...//不带秘钥 SymmetricCrypto sm4 = SmUtil.sm4(); //带秘钥 String key = "1234567812345678"; SymmetricCrypto sm4
1、SM4算法简介 中国国家密码管理局于2006年1月6日发布第7号公告,将我国无线局域网产品的加密算法确定为SM4算法(原SMS4)。这是国内官方公布的第一个商用密码算法。...SM4分组密码算法是一个迭代分钟密码算法,由加解密算法和密钥扩展算法组成,SM4分组密码算法采用非平衡Feistel结构,明文分组长度为128bit,密钥长度为128bit。...在SM4算法中S盒是固定不变的,而且系统参数CKi的取值也是不变的,系统参数一共有32个。 SM4的解密过程与加密过程结构完全相同,不同的仅仅是轮秘钥的使用顺序。...解密算法核心代码 SM4的解密算法与加密算法类似,唯一不同之处就是使用的轮子密钥的顺序不同,SM4解密使用的轮子密钥与加密使用的轮子密钥正好顺序相反。...西安电子科技大学出版社,2009.12 [2] 张健等 《密码学原理及应用技术》 清华大学出版,2011.08 [3] 国内一些技术博客 [4] 中国知网上的一些论文 [5] java
harmony-utils之SM4,SM4加解密harmony-utils 简介与说明harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用...onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { AppUtil.init(this.context); }SM4...算法简介SM4是中国自主研发的商用对称加密算法,由国家密码管理局于2006年发布,2012年成为国家密码行业标准(GM/T 0002-2012)。...作为中国密码体系(SM系列)的核心组件,SM4广泛应用于金融支付、电子政务、物联网等领域,满足国产密码合规要求。...SM4 应用场景金融支付:在银行卡交易、移动支付及网上银行中加密敏感数据(如交易金额、账户信息),确保传输安全并符合中国金融行业密码合规要求;电子政务:用于电子身份证、政务系统数据传输加密,结合SM2签名算法实现身份认证与数据完整性保护
1、SM4简介 https://baike.baidu.com/item/SM4.0/3901780 2、引入SM4的依赖包 在pom.xml中增加SM4的依赖包。...groupId> bcprov-jdk15on 1.59 3、项目中使用 封装好SM4...//身份证、手机号SM4加密存储 sysBfinfo.setLeaderIdcard(SM4Util.encryptEcb(SM4Util.hexKey,sysBfinfo.getLeaderIdcard...())); sysBfinfo.setPhone(SM4Util.encryptEcb(SM4Util.hexKey,sysBfinfo.getPhone())); //身份证、手机号SM4解密 String...javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security
对称加密简单来说就是有一个明文,通过一个密钥加密之后得到一个密文,这个密文可以通过相同的密要解密得出和原来相同的明文 二、sm4算法 算法定义:SM4算法是一种分组密码算法。...SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。...686f767d, 848b9299, a0a7aeb5, bcc3cad1, d8dfe6ed, f4fb0209, 10171e25, 2c333a41, 484f565d, 646b7279 四、java...代码实现 import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.Random; /...fr=search SM4算法及实现方式:http://www.mamicode.com/info-detail-2603734.html SM4加密解密:https://blog.csdn.net/Mr_ye931
js端加密(使用sm-crypto) 引入依赖: const sm4 = require('sm-crypto').sm4 const sm2 = require('sm-crypto'...加密: sm4Encrypt(data, key) { // sm4加密数据 return sm4.encrypt...(data, key); } java端解密(使用Hutool工具包,需引入Bouncy Castle库的依赖) 引入依赖包 ...生成密钥 注意密钥长度必须为128位 SM4 sm4 = new SM4(); SecretKey secretKey = sm4.getSecretKey();...解密 这里的key与前端加密使用的key相同 SM4 sm4 = new SM4(HexUtil.decodeHex(key)); String decryptStr =
最近工作需要用到SM4加密解密算法,所以研究了一下。...内容主要参考自:https://blog.csdn.net/weixin_34411563/article/details/86000381 首先介绍一下SM4加密算法 SM4是我们自己国家的一个分组密码算法...http://www.cnnic.net.cn/jscx/mixbz/sm4/,具体的加密很麻烦,我也只看了下简单介绍。...; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import...java.security.SecureRandom; import java.security.Security; import java.util.Arrays; import javax.crypto.Cipher
国密sm4加解密算法工具类,可用于生产环境 package com.example.demo.endecryption.utils; import org.apache.commons.codec.binary.Base64...javax.crypto.IllegalBlockSizeException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset...; import java.security.InvalidKeyException; import java.security.Security; /** * 国密sm4加解密 */ public class...Sm4Util { public enum Algorithm { SM4("SM4","SM4","key长度:16 byte"); private String keyAlgorithm;...BadPaddingException { return cipherDoFinal(algorithm, Cipher.DECRYPT_MODE, key, data); } } 测试 /** * 国密sm4
其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用 二、SM4算法 2.1算法背景 SM4算法是用于WAPI的分组密码算法,是2006年我国国家密码管理局公布的国内第一个商用密码算法...SM4算法的设计目标是替代国际通用的AES算法,适用于无线局域网、金融支付、物联网等场景的数据加密。 2.2算法特点 分组长度和密钥长度:SM4算法的分组长度和密钥长度均为128位(16字节)。...安全性:SM4算法的安全性经过严格评估,能够抵御差分攻击、线性攻击等常见密码分析方法。 2.3 基本部件 SM4密码算法的基本运算有模2加和循环移位。...抗攻击能力:SM4算法的S盒设计和线性变换结构能够有效抵御差分攻击、线性攻击等常见密码分析方法。 国际认可:SM4算法已成为国际标准,表明其设计通过了国际密码学界的审查。...2.7 应用场景 无线局域网(WLAN):SM4算法是中国无线局域网标准(WAPI)中推荐的加密算法。 金融支付:在移动支付、网上银行等场景中,SM4算法用于保护敏感数据。
打算去支持一下于是看了一下官方文档就准备把自己之前的项目重构一下,我自己的项目中权限框架用的springsecurity做用户密码加密的时候直接用自带的就行,但是换成Sa-Token之后据我现在所知里边没有可用的对密码进行加密的工具类,所以我选择的国密SM4...但是有一个问题因为我们的数据库可能随时挂掉,这就有一个问题了,在SM4加密的时候,我们的秘钥是动态的,每次产生的秘钥都是不一样的,他保存在类似于ThreadLocal这种上下文中,我们下次用的时候会从上下文中取出来
分享一篇SM4加密算法实现文章,算法用C语言即可实现,只有短短300多行代码。...SMS4是我国无线局域网标准WAPI中所采用的分组密码标准,随后被我国商用密码标准采用,又名SM4(SM是“商密”的缩写,目前公布的其他商密标准包括SM2椭圆曲线公钥密码,SM3密码杂凑算法)。...SM4的密钥长度和分组长度均为128比特,其设计安全性等同于AES-128。...我对加密算法进行了一个封装,可以直接用来加密文件,我的封装方法是:由于SM4的密钥长度和分组长度均为128比特(16个字节),所以我们必须要对密码和明文进行处理,最简单就是补齐16字节,密码规定最大只能是...SM4 subkeys */ }sm4_context; /** * \brief SM4 key schedule (128-bit, encryption)
我准备研究SM4算法的时候,中国互联网络信息中心里已经不提供SM4算法的标准文档了,所以只能去网上查阅资料。感谢一文带你学会国产加密算法SM4的java实现方案这篇文章。 ?...2、SM4加密算法应用场景 SM4常用于政府系统的数据传输加密,我们使用前端向后端传递信息,或者分布式场景下不同模块之间的调用,可以使用此算法。...3、SM4算法java的实现 现在我就来简单的实现一下SM4算法的加解密功能 首先是一些常数值,包括编码,算法名,秘钥长度等,如果可以的写成参数值最好。...; import java.security.SecureRandom; import java.security.Security; import java.util.Arrays; import java.util.HashMap...; import java.util.Map; import java.util.Random; import java.util.concurrent.LinkedBlockingQueue; import
SM4加密算法实现Java和C#相互加密解密 近期由于项目需要使用SM4对数据进行加密,然后传给Java后台,Java后台使用的也是SM4的加密算法但是就是解密不正确,经过一步步调试发现Java中好多数据类型与...C#的相同的数据类型是存在不同的比如:byte在Java中范围是-127~128,而C#中的范围是0~255,这就导致使用C#的加密的明文产生的密文到Java中解密不正确。...新建源文件 main.cpp,代码如下 /********************************** 2017-9-5 21:02:51 声明需要被java调用的方法,该方法和java接口内部方法保持一致...项目 Java项目中要用到 jna的包和jna-platform的包下载地址:https://github.com/java-native-access/jna 新建Java空项目,在src中添加package...和C#的SM4加密解密问题。
原文 | https://dwz.cn/zJwokV1S 整理 | 程序猿杂货铺 我的名字叫 SM4,我还有三位兄长,分别是大哥 SM1, 二哥 SM2, 和三哥 SM3。...说起我的名字,故事要回到2006 年的时候,我出生的时候并不是叫 SM4 的,而是叫做 SMS4。只是 2012 年的时候我父亲给我改名了。虽然我起了一个洋气的名字,但我必须郑重地说,我是一个中国人。...《SM4 分组密码算法标准英文文本》下载地址:http://suo.im/52YK0H (公众号后台回复【SM4】可以获取 PDF 版本) 我的实现 后面陆陆续续,有很多语言根据我的标准进行了实现,包括...C、Java、Python 等等。...下面贴一下我的好朋友 Java 实现中的关键轮函数(代码量比较大,限于篇幅,此处就不全部贴出来,想进一步了解的后台可以回复【SM4】获取完整代码)。 /** * 轮函数F。
sm2和sm4加密算法浅析 一: SM2 简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 ,SM2为非对称加密,基于ECC。该算法已公开。...F2660BE1 715A4589 334C74C7 Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0 二:SM4...简介:SM4由国家密码管理局于2012年3月21日发布,SM4 无线局域网标准的分组数据算法。
SM4加密算法 密码算法中常用的一些数据单位: 位/比特/bit:指一个二进制位。...字节/byte:1字节=8位 [公式] 字/word:1字=4字节=32位 [公式] SM4是一种分组密码算法,其分组长度为128位(即16字节,4字),密钥长度也为128位(即16字节,4字)。...SM4的解密过程与加密过程完全相同,也包括32轮迭代和一次反序变换。只是在轮迭代的时候,需要将轮密钥逆序使用。...>1.69 代码块 @Test void contextLoads() { String content="123456"; SM4...sm4 = SmUtil.sm4(); String encryptHex = sm4.encryptHex(content); String decryptStr = sm4.decryptStr
文章目录 一.算法原理描述 1.密钥及密钥参量: 2.加密算法: 3.解密算法: 4.密钥扩展算法: 二.C语言算法实现 .h部分代码: .c部分代码: 一.算法原理描述 SM4分组密码算法是一个迭代分组密码算法...SM4分组密码算法采用非平衡Feistel结构,分组长度为128b(16byte)密钥长度为128b(16byte)。加密算法与密钥扩展算法均采用非线性迭代结构。...但可以自行补足字节来做到任意长度字节数据加密,后面C语言实现部分有所体现) 1.密钥及密钥参量: SM4分组密码算法的加密密钥长度为128b,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(...2.加密算法: SM4加密算法由32次迭代运算和1次反序变换R组成 设明文输入为(X0,X1,X2,X3)∈(Z232)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z232)4,轮密钥为rki∈Z232
一、国密SM3与SM4 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。...不懂也没关系,以后别人说SM2、SM3、SM4知道它们是干啥的就行。这次主要和大家从简单的SM3、SM4说起。...SM4算法:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。...要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。...SM4简单举例: int main(){ unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15