备案 个人网站名称,做网站编辑怎么样,太原注册公司网站,centos wordpress 建站教程前言上次总结了一下加密算法的分类#xff08;加密算法有集中形式#xff0c;各有什么不同#xff1f;#xff09;#xff0c;现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法。对称加密#xff0c;密钥长度和分组长度均为128位。ps#xff1a;我们既可以基…前言上次总结了一下加密算法的分类加密算法有集中形式各有什么不同现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法。对称加密密钥长度和分组长度均为128位。ps我们既可以基于Java 原生实现加密和解密又可以基于第三方的工具包实现。下面我们首先介绍基于第三方工具包 hutool如果是项目的话建议直接使用第三方的工具。一、使用步骤1.引入库在项目的pom.xml的dependencies中加入以下内容:dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.4.5/version
/dependencydependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15to18/artifactIdversion1.66/version
/dependency
说明 bcprov-jdk15to18的版本请前往Maven中央库搜索查找对应JDK的最新版本。2.创建maven测试工程3.开始编写对称加密SM4测试方法package org.xiangbiao;import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SymmetricCrypto;/***SM4Test* author larry.xiang**/
public class SM4Test
{public static void main( String[] args ){String content fisco bcos;SymmetricCrypto sm4 SmUtil.sm4();String encryptHex sm4.encryptHex(content);String decryptStr sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);System.out.println(encryptHexrndecryptStr);}
}
4.测试结果二、如何定制自己的密钥如下面的代码所示package org.xiangbiao;import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SymmetricCrypto;/***SM4Test* author larry.xiang**/
public class SM4Test
{public static void main( String[] args ){String content fisco bcos;// key必须是16位String key1234567890123456;SymmetricCrypto sm4 SmUtil.sm4(key.getBytes());String encryptHex sm4.encryptHex(content);String decryptStr sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);System.out.println(encryptHexrndecryptStr);}
}
总结有小伙伴在使用自己自定义的密钥报错如下Exception in thread main cn.hutool.crypto.CryptoException: InvalidKeyException: SM4 requires a 128 bit keyat cn.hutool.crypto.symmetric.SymmetricCrypto.encrypt(SymmetricCrypto.java:209)at cn.hutool.crypto.symmetric.SymmetricCrypto.encrypt(SymmetricCrypto.java:312)at cn.hutool.crypto.symmetric.SymmetricCrypto.encryptHex(SymmetricCrypto.java:322)at org.xiangbiao.SM4Test.main(SM4Test.java:20)
Caused by: java.security.InvalidKeyException: SM4 requires a 128 bit keyat org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineInit(Unknown Source)at javax.crypto.Cipher.init(Cipher.java:1245)at javax.crypto.Cipher.init(Cipher.java:1185)at cn.hutool.crypto.symmetric.SymmetricCrypto.encrypt(SymmetricCrypto.java:203)... 3 more注意128 bit 128 / 8 16 byte链接java中使用国密SM4算法详解_ CSDN博客 作者向彪-fisco bcos