欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、SM4介紹

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

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

二、引入Hutool工具類

POM文件引入下面兩個依賴

<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("測試加密");
        System.out.println("加密后的字符串為"+str);
        System.out.println("解密后的字符串為"+SM4Utils.decryptSm4(str));
    }

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

相關(guān)文章

  • mybatis調(diào)用mysql存儲過程并獲取返回值方式

    mybatis調(diào)用mysql存儲過程并獲取返回值方式

    這篇文章主要介紹了mybatis調(diào)用mysql存儲過程并獲取返回值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java使用bcrypt實現(xiàn)對密碼加密效果詳解

    Java使用bcrypt實現(xiàn)對密碼加密效果詳解

    bcrypt是一種自帶鹽值(自動加鹽)的加密方案。本文將通過示例為大家詳細(xì)介紹這一對密碼進(jìn)行加密的算法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • springboot 獲取訪問接口的請求的IP地址的實現(xiàn)

    springboot 獲取訪問接口的請求的IP地址的實現(xiàn)

    本文主要介紹了springboot獲取訪問接口的請求的IP地址的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MyBatis-Plus 查詢返回實體對象還是map

    MyBatis-Plus 查詢返回實體對象還是map

    這篇文章主要介紹了MyBatis-Plus 查詢返回實體對象還是map,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • idea maven項目無法識別jar包里的class解決方案

    idea maven項目無法識別jar包里的class解決方案

    這篇文章主要介紹了idea maven項目無法識別jar包里的class解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringBoot如何獲取Get請求參數(shù)詳解

    SpringBoot如何獲取Get請求參數(shù)詳解

    SpringBoot為我們封裝了許多簡便的獲取請求參數(shù)的方法,下面這篇文章主要給大家介紹了關(guān)于SpringBoot如何獲取Get請求參數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • IE8+SpringMVC文件上傳防止JSON下載

    IE8+SpringMVC文件上傳防止JSON下載

    這篇文章主要介紹了IE8+SpringMVC文件上傳防止JSON下載的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程

    詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程

    這篇文章主要介紹了詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring @Order注解使用詳解

    Spring @Order注解使用詳解

    注解@Order或者接口Ordered的作用是定義Spring IOC容器中Bean的執(zhí)行順序的優(yōu)先級,而不是定義Bean的加載順序,Bean的加載順序不受@Order或Ordered接口的影響
    2022-08-08
  • springboot使用注解獲取yml配置的兩種方法

    springboot使用注解獲取yml配置的兩種方法

    本文主要介紹了springboot使用注解獲取yml配置的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09

最新評論