一、SM4介绍
SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。
在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。
SM4.0中的指令长度被提升到大于64K(即64×1024)的水平,这是SM 3.0规格(渲染指令长度允许大于512)的128倍。
二、引入Hutool工具类
POM文件引入下面两个依赖
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15to18</artifactId><version>1.69</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.5</version></dependency>
三、新建SM4Util
packageorg.demo.utils;importcn.hutool.crypto.symmetric.SymmetricCrypto;importcn.hutool.core.util.StrUtil;publicclassSM4Utils{//key必须是16字节,即128位finalstaticString key ="testsm4key123456";//指明加密算法和秘钥staticSymmetricCrypto sm4 =newSymmetricCrypto("SM4/ECB/PKCS5Padding", key.getBytes());/**
* 加密为16进制,也可以加密成base64/字节数组
*
* @param plaintext
* @return
*/publicstaticStringencryptSm4(String plaintext){if(StrUtil.isBlank(plaintext)){return"";}return sm4.encryptHex(plaintext);}/**
* 解密
*
* @param ciphertext
* @return
*/publicstaticStringdecryptSm4(String ciphertext){if(StrUtil.isBlank(ciphertext)){return"";}return sm4.decryptStr(ciphertext);}}
四、使用
publicstaticvoidmain(String[] args){String str =SM4Utils.encryptSm4("测试加密");System.out.println("加密后的字符串为"+str);System.out.println("解密后的字符串为"+SM4Utils.decryptSm4(str));}
以上内容就是使用Hutools实现国密算法SM4的全过程,有问题可以私信博主
版权归原作者 每天吃八顿 所有, 如有侵权,请联系我们删除。