日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java break 在if 中使用_java中使用国密SM4算法详解

發(fā)布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java break 在if 中使用_java中使用国密SM4算法详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

上次總結(jié)了一下加密算法的分類(加密算法有集中形式,各有什么不同?),現(xiàn)在我們用java語言實(shí)現(xiàn)一下SM4:無線局域網(wǎng)標(biāo)準(zhǔn)的分組數(shù)據(jù)算法。對稱加密,密鑰長度和分組長度均為128位。

ps:我們既可以基于Java 原生實(shí)現(xiàn)加密和解密,又可以基于第三方的工具包實(shí)現(xiàn)。下面我們首先介紹基于第三方工具包 hutool,如果是項目的話建議直接使用第三方的工具。

一、使用步驟

1.引入庫

在項目的pom.xml的dependencies中加入以下內(nèi)容:

<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.66</version> </dependency>

說明: bcprov-jdk15to18的版本請前往Maven中央庫搜索,查找對應(yīng)JDK的最新版本。

2.創(chuàng)建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(encryptHex+"rn"+decryptStr);} }

4.測試結(jié)果

二、如何定制自己的密鑰?

如下面的代碼所示:

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 key="1234567890123456";SymmetricCrypto sm4 = SmUtil.sm4(key.getBytes());String encryptHex = sm4.encryptHex(content);String decryptStr = sm4.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);System.out.println(encryptHex+"rn"+decryptStr);} }

總結(jié)

有小伙伴在使用自己自定義的密鑰報錯如下:

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

總結(jié)

以上是生活随笔為你收集整理的java break 在if 中使用_java中使用国密SM4算法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。