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)文章希望大家以后多多支持腳本之家!
- SpringBoot使用AES對JSON數(shù)據(jù)加密和解密的實現(xiàn)方法
- springboot使用國產(chǎn)加密算法方式,sm2和sm3加解密demo
- Springboot接口返回參數(shù)及入?yún)SA加密解密的過程詳解
- SpringBoot實現(xiàn)接口參數(shù)加密解密的示例代碼
- 關(guān)于Springboot數(shù)據(jù)庫配置文件明文密碼加密解密的問題
- springboot實現(xiàn)敏感字段加密存儲解密顯示功能
- springboot實現(xiàn)注冊加密與登錄解密功能(demo)
- SpringBoot接口加密解密統(tǒng)一處理
- 在SpringBoot中通過jasypt進(jìn)行加密解密的方法
- Springboot實現(xiàn)密碼的加密解密
相關(guān)文章
mybatis調(diào)用mysql存儲過程并獲取返回值方式
這篇文章主要介紹了mybatis調(diào)用mysql存儲過程并獲取返回值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08springboot 獲取訪問接口的請求的IP地址的實現(xiàn)
本文主要介紹了springboot獲取訪問接口的請求的IP地址的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07idea maven項目無法識別jar包里的class解決方案
這篇文章主要介紹了idea maven項目無法識別jar包里的class解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程
這篇文章主要介紹了詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04