java break 在if 中使用_java中使用国密SM4算法详解
生活随笔
收集整理的這篇文章主要介紹了
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑侠情缘2剑歌行影煞怎么养成
- 下一篇: 实况足球2013两种任意球教程-如何踢好