【开发标题】vue的前端和java的配景,用sm4,实现前台加密,配景解密 ...

李优秀  金牌会员 | 2024-6-23 07:19:42 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 336|帖子 336|积分 1008

vue

引入的包

  1. npm install sm-crypto
复制代码
代码加密解密

加密:
key :代表着密钥,必须是16 字节的十六进制密钥
password :加密前的密码
sm4Password :代表sm4加密后的密文
  1. const sm4 = require('sm-crypto').sm4
  2. const key = '0123456789abcdeffedcba9876543210' // 16 字节的十六进制密钥
  3. const sm4Password = sm4.encrypt(password, key)
复制代码

解密:
key :代表着密钥,必须是16 字节的十六进制密钥
sm4Password:解密前的密文
password:解密后的密码
  1. const sm4 = require('sm-crypto').sm4
  2. const key = '0123456789abcdeffedcba9876543210' // 16 字节的十六进制密钥
  3. const password= sm4.decrypt(sm4Password , key)
复制代码
java

maven

  1. <!--sm4-->
  2.             <dependency>
  3.                 <groupId>cn.hutool</groupId>
  4.                 <artifactId>hutool-all</artifactId>
  5.                 <version>5.8.22</version>
  6.             </dependency>
  7.             <dependency>
  8.                 <groupId>org.bouncycastle</groupId>
  9.                 <artifactId>bcprov-jdk15on</artifactId>
  10.                 <version>1.70</version> <!-- 使用最新版本 -->
  11.             </dependency>
复制代码
代码

加密息争密:
  1. import cn.hutool.crypto.symmetric.SymmetricCrypto;
  2. import org.bouncycastle.jce.provider.BouncyCastleProvider;
  3. import org.bouncycastle.util.encoders.Hex;
  4. import java.security.Security;
  5. public class SM4DecryptionExample {
  6.     static {
  7.         Security.addProvider(new BouncyCastleProvider());
  8.     }
  9.     private static final String ENCODING = "UTF-8";
  10.     public static final String ALGORITHM_NAME = "SM4";
  11.     // 加密算法/分组加密模式/分组填充方式
  12.     // PKCS5Padding-以8个字节为一组进行分组加密
  13.     // 定义分组加密模式使用:PKCS5Padding
  14.     public static final String ALGORITHM_NAME_ECB_PADDING = "SM4/ECB/PKCS5Padding";
  15.     // 128-32位16进制;256-64位16进制
  16.     public static final int DEFAULT_KEY_SIZE = 128;
  17.     public static void main(String arg[]) throws Exception {
  18.         String  paramStr = "pass$123";
  19.         String key  = "0123456789abcdeffedcba9876543210";
  20.         String arfter = encrypt(key,paramStr);
  21.         String brfore = decrypt(key,arfter);
  22.         System.out.println("明文:---------------------"+paramStr);
  23.         System.out.println("加密后密文:---------------------"+arfter);
  24.         System.out.println("解密后明文:---------------------"+brfore);
  25.     }
  26.     /**
  27.      * 加密
  28.      *
  29.      * @param key 密钥
  30.      * @param data 加密前的明文
  31.      * @return  String 返回密文
  32.      * @author  wx
  33.      * @date  2023-12-08
  34.      */
  35.     public static String encrypt(String key, String data) {
  36.         byte[] sm4KeyBytes = Hex.decode(key);
  37.         SymmetricCrypto sm4 = new SymmetricCrypto("SM4/ECB/PKCS5Padding", sm4KeyBytes);
  38.         return sm4.encryptHex(data).toUpperCase();
  39.     }
  40.     /**
  41.      *
  42.      * 解密
  43.      * @param key 密钥
  44.      * @param data 加密后的密文
  45.      * @return  String 返回明文
  46.      * @author  wx
  47.      * @date  2023-12-08
  48.      */
  49.     public static String decrypt(String key,String data) {
  50.         try{
  51.             byte[] sm4KeyBytes = Hex.decode(key);
  52.             SymmetricCrypto sm4 = new SymmetricCrypto("SM4/ECB/PKCS5Padding", sm4KeyBytes);
  53.             return sm4.decryptStr(data);
  54.         }catch (Exception e){
  55.             return data;
  56.         }
  57.     }
  58. }
复制代码
运行结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表