最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例

 更新時(shí)間:2023年10月25日 11:05:17   作者:每天吃八頓  
在商用密碼體系中,SM4主要用于數(shù)據(jù)加密,本文就來(lái)介紹一下SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下

一、SM4介紹

SM4.0(原名SMS4.0)是中華人民共和國(guó)政府采用的一種分組密碼標(biāo)準(zhǔn),由國(guó)家密碼管理局于2012年3月21日發(fā)布。相關(guān)標(biāo)準(zhǔn)為“GM/T 0002-2012《SM4分組密碼算法》(原SMS4分組密碼算法)”。

在商用密碼體系中,SM4主要用于數(shù)據(jù)加密,其算法公開(kāi),分組長(zhǎng)度與密鑰長(zhǎng)度均為128bit,加密算法與密鑰擴(kuò)展算法都采用32輪非線(xiàn)性迭代結(jié)構(gòu),S盒為固定的8比特輸入8比特輸出。
SM4.0中的指令長(zhǎng)度被提升到大于64K(即64×1024)的水平,這是SM 3.0規(guī)格(渲染指令長(zhǎng)度允許大于512)的128倍。

二、引入Hutool工具類(lèi)

POM文件引入下面兩個(gè)依賴(lài)

<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

package org.demo.utils;

import cn.hutool.crypto.symmetric.SymmetricCrypto; 
import cn.hutool.core.util.StrUtil;

public class SM4Utils {

	//key必須是16字節(jié),即128位
	final static String key = "testsm4key123456";

	//指明加密算法和秘鑰
	static SymmetricCrypto sm4 = new SymmetricCrypto("SM4/ECB/PKCS5Padding", key.getBytes());

	/**
	 * 加密為16進(jìn)制,也可以加密成base64/字節(jié)數(shù)組
	 *
	 * @param plaintext
	 * @return
	 */
	public static String encryptSm4(String plaintext) {
		if (StrUtil.isBlank(plaintext)) {
			return "";
		}
		return sm4.encryptHex(plaintext);
	}

	/**
	 * 解密
	 *
	 * @param ciphertext
	 * @return
	 */
	public static String decryptSm4(String ciphertext) {
		if (StrUtil.isBlank(ciphertext)) {
			return "";
		}
		return sm4.decryptStr(ciphertext);
	}
}

四、使用

    public static void main(String[] args) {
        String str =  SM4Utils.encryptSm4("測(cè)試加密");
        System.out.println("加密后的字符串為"+str);
        System.out.println("解密后的字符串為"+SM4Utils.decryptSm4(str));
    }

以上內(nèi)容就是使用Hutools實(shí)現(xiàn)國(guó)密算法SM4的全過(guò)程,更多相關(guān)SpringBoot 國(guó)密SM4加密解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中的Bean注入問(wèn)題

    SpringBoot中的Bean注入問(wèn)題

    SpringBoot開(kāi)發(fā)中,Bean注入是關(guān)鍵,涉及構(gòu)造函數(shù)注入、Setter注入和字段注入等方法,常見(jiàn)問(wèn)題包括Bean未找到、循環(huán)依賴(lài)、多個(gè)實(shí)現(xiàn)注入等,推薦使用構(gòu)造函數(shù)注入以增強(qiáng)代碼測(cè)試性和維護(hù)性,并關(guān)注Bean的生命周期和作用域
    2024-09-09
  • Java基礎(chǔ)之List內(nèi)元素的排序性能對(duì)比

    Java基礎(chǔ)之List內(nèi)元素的排序性能對(duì)比

    這篇文章主要介紹了Java基礎(chǔ)之List內(nèi)元素的排序性能對(duì)比,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 淺談SpringBoot 中關(guān)于自定義異常處理的套路

    淺談SpringBoot 中關(guān)于自定義異常處理的套路

    這篇文章主要介紹了淺談SpringBoot 中關(guān)于自定義異常處理的套路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java堆棧跟蹤工具jstack的使用教程

    java堆棧跟蹤工具jstack的使用教程

    jstack(stack?trace?for?java)是java虛擬機(jī)自帶的一種堆棧跟蹤工具,主要用于生成java虛擬機(jī)當(dāng)前時(shí)刻的線(xiàn)程快照,下面我們就來(lái)學(xué)習(xí)一下它的具體使用吧
    2023-11-11
  • Java控制臺(tái)實(shí)現(xiàn)猜拳游戲

    Java控制臺(tái)實(shí)現(xiàn)猜拳游戲

    這篇文章主要為大家詳細(xì)介紹了Java控制臺(tái)實(shí)現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • SpringBoot中YAML配置文件實(shí)例詳解

    SpringBoot中YAML配置文件實(shí)例詳解

    前面一直在使用properties配置文件,spring boot也支持yaml配置文件,下面這篇文章主要給大家介紹了關(guān)于SpringBoot中YAML配置文件的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java monitor機(jī)制使用方法解析

    Java monitor機(jī)制使用方法解析

    這篇文章主要介紹了Java monitor機(jī)制使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Mybatis中自定義TypeHandler處理枚舉的示例代碼

    Mybatis中自定義TypeHandler處理枚舉的示例代碼

    typeHandler,是 MyBatis 中的一個(gè)接口,用于處理數(shù)據(jù)庫(kù)中的特定數(shù)據(jù)類(lèi)型,下面簡(jiǎn)單介紹創(chuàng)建自定義 typeHandler 來(lái)處理枚舉類(lèi)型的示例,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • springboot部署linux訪(fǎng)問(wèn)服務(wù)器資源的方法

    springboot部署linux訪(fǎng)問(wèn)服務(wù)器資源的方法

    這篇文章主要介紹了springboot部署linux訪(fǎng)問(wèn)服務(wù)器資源,部署springboot項(xiàng)目至服務(wù)器用了幾種不同方法,文中給大家詳細(xì)介紹,需要的朋友可以參考下
    2019-12-12
  • Java中反射的20個(gè)使用技巧分享

    Java中反射的20個(gè)使用技巧分享

    Java反射是一種強(qiáng)大的機(jī)制,允許程序在運(yùn)行時(shí)檢查和操作類(lèi),接口,字段和方法,本文總結(jié)了20個(gè)關(guān)于Java反射的經(jīng)驗(yàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05

最新評(píng)論

彝良县| 忻州市| 会宁县| 开远市| 康保县| 平原县| 舟曲县| 德兴市| 青川县| 福海县| 崇左市| 平利县| 车致| 青冈县| 乐亭县| 武邑县| 阿尔山市| 从化市| 昌都县| 平南县| 邛崃市| 镇沅| 黔西县| 永昌县| 泉州市| 新竹县| 兰西县| 衡东县| 崇礼县| 乌拉特后旗| 永康市| 天柱县| 江阴市| 广丰县| 利津县| 滕州市| 卢湾区| 新乡市| 临武县| 云和县| 喀喇沁旗|