Hutool工具进行SM4加密报错:No such algorithm: SM4/ECB/PKCS5Padding

这篇具有很好参考价值的文章主要介绍了Hutool工具进行SM4加密报错:No such algorithm: SM4/ECB/PKCS5Padding。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

报错详情:

Exception in thread "SpringThread-pool-pzj-5" Exception in thread "SpringThread-pool-pzj-10" java.lang.ExceptionInInitializerError
	at com.soc.cloud.iot.schedule.log.LogTaskContent.lambda$null$10(LogTaskContent.java:321)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: cn.hutool.crypto.CryptoException: NoSuchAlgorithmException: No such algorithm: SM4/ECB/PKCS5Padding
	at cn.hutool.crypto.SecureUtil.createCipher(SecureUtil.java:987)
	at cn.hutool.crypto.symmetric.SymmetricCrypto.init(SymmetricCrypto.java:154)
	at cn.hutool.crypto.symmetric.SymmetricCrypto.<init>(SymmetricCrypto.java:124)
	at cn.hutool.crypto.symmetric.SymmetricCrypto.<init>(SymmetricCrypto.java:112)
	at cn.hutool.crypto.symmetric.SymmetricCrypto.<init>(SymmetricCrypto.java:101)
	at com.soc.cloud.util.SM4Helper2.<clinit>(SM4Helper2.java:10)
	... 4 more
Caused by: java.security.NoSuchAlgorithmException: No such algorithm: SM4/ECB/PKCS5Padding
	at javax.crypto.Cipher.getInstance(Cipher.java:687)
	at cn.hutool.crypto.SecureUtil.createCipher(SecureUtil.java:985)
	... 9 more
Exception in thread "SpringThread-pool-pzj-6" Exception in thread "SpringThread-pool-pzj-4" Exception in thread "SpringThread-pool-pzj-2" java.lang.NoClassDefFoundError: Could not initialize class com.soc.cloud.util.SM4Helper2
	at com.soc.cloud.iot.schedule.log.LogTaskContent.lambda$null$10(LogTaskContent.java:321)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
java.lang.NoClassDefFoundError: Could not initialize class com.soc.cloud.util.SM4Helper2
	at com.soc.cloud.iot.schedule.log.LogTaskContent.lambda$null$10(LogTaskContent.java:321)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
java.lang.NoClassDefFoundError: Could not initialize class com.soc.cloud.util.SM4Helper2
	at com.soc.cloud.iot.schedule.log.LogTaskContent.lambda$null$10(LogTaskContent.java:321)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
java.lang.NoClassDefFoundError: Could not initialize class com.soc.cloud.util.SM4Helper2
	at com.soc.cloud.iot.schedule.log.LogTaskContent.lambda$null$10(LogTaskContent.java:321)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

源码:

import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SymmetricCrypto;

public class SM4Helper2 {
    //key必须是16字节,即128位
    final static String key = "8464288604b7fc85";

    //指明加密算法和秘钥
    static SymmetricCrypto sm4 = new SymmetricCrypto("SM4/ECB/PKCS5Padding", key.getBytes());
//    static SymmetricCrypto sm4 = SmUtil.sm4(key.getBytes());
    //加密为16进制,也可以加密成base64/字节数组
    public static byte[]  encryptSm4(byte[] data) {
        byte[] encrypt = sm4.encrypt(data);
        return encrypt;
    }

    //解密
    public static byte[] decryptSm4(byte[] data) {
        byte[] decrypt = sm4.decrypt(data);
        return decrypt;
    }

}

解决办法:
maven应用的包版本不对:
bc包需要1.69版本的,下面这组坐标可以解决这个问题。文章来源地址https://www.toymoban.com/news/detail-565252.html

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15to18</artifactId>
            <version>1.69</version>
        </dependency>

到了这里,关于Hutool工具进行SM4加密报错:No such algorithm: SM4/ECB/PKCS5Padding的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SM4加密

    SM4加密方法,可以通过传递需要加密的明文和密钥来进行调用: 在这个示例中,我们使用了Bouncy Castle加密库来实现SM4加密。该方法使用了CBC模式,并使用随机生成的IV来增强安全性。我们将IV和密文组合成一个字节数组,并将其转换为十六进制字符串以便于输出和传输。 要使

    2024年02月11日
    浏览(35)
  • sm2签名与sm4加密(一)

    因为某些不可抗原因,友商加密平台系统无法提供接口进行加密验签,以至于需要自己实现监管要求的加密验签。 接口要求,报文先经过sm2生成签名,之后进行sm4加密。收到报文后,先进行sm4解密,解密后将报文进行验签。验证成功之后既结束全部流程。 所以整体上分为两

    2024年02月12日
    浏览(41)
  • sm2签名与sm4加密(三)

    二简单介绍了一下理论,三来简单说下sm2签名的实现, 首先因为openssl太复杂没搞懂,就去看gmssl的代码,gmssl的密钥结构体很简单,长这个样子: 很明显公钥是一个点由xy两个坐标组成,私钥是一个长串。 sm2签名过程可以大体上分成三步,生成公私钥——(交换密钥)——使

    2024年01月18日
    浏览(42)
  • 前端SM4加密解密

    前后端加密一致,如果不一致就是key有问题 调用方法: sm4.js文件

    2024年04月25日
    浏览(58)
  • java 使用hutool工具进行MD5加密

    引入依赖 MD5加密

    2024年02月16日
    浏览(45)
  • Java SM4加密解密

    2024年02月11日
    浏览(67)
  • JAVA -SM4 ECB加密

    前言:根据网络安全法要求,现在对数据存储、口令安全要求越来越严格,对技术人员编码规范要求愈加严苛,推出国密算法等政策要求 sm4-ecm举例说明 第一步引入包提示错误 第二步:pom.xml依赖如下 说明如下: BouncyCastle是一个开源的第三方算法提供商。 BouncyCastle提供了很多

    2024年02月16日
    浏览(31)
  • js sm4实现加密解密

    2023.10.25今天我学习了如何使用sm4进行加密解密: 注意:前端和后端的编码必须相同才能使用,不然会出现空字符串的错误。 一、首先安装sm4.js包: package.json中的版本: (安装失败的话可以直接复制下面的版本然后npm install) 二、main.js中全局引入或局部引入: 这个是全局

    2024年01月18日
    浏览(54)
  • SpringBoot实现国密SM4加密、解密

    SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。 在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算

    2024年02月07日
    浏览(63)
  • 国密SM4对称加密Java加解密

    提示:国密SM4对称加密Java加解密 国家密码管理局 参考博文 SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。 SM4 代码如下(示例): 在密码学中

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包