From 94c78c2e5f4affd2e92195d70b7576e6da24325d Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期三, 05 二月 2025 13:02:13 +0800 Subject: [PATCH] 煤矿缴费修改 --- ruoyi-admin/src/test/java/com/ruoyi/TestEncrypt.java | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 131 insertions(+), 0 deletions(-) diff --git a/ruoyi-admin/src/test/java/com/ruoyi/TestEncrypt.java b/ruoyi-admin/src/test/java/com/ruoyi/TestEncrypt.java new file mode 100644 index 0000000..c2a7544 --- /dev/null +++ b/ruoyi-admin/src/test/java/com/ruoyi/TestEncrypt.java @@ -0,0 +1,131 @@ +package com.ruoyi; + +import com.alibaba.fastjson2.JSONObject; +import com.gkhy.exam.institutionalaccess.model.req.ThCertReqDTO; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.ResultConstants; +import com.ruoyi.common.exception.BusinessException; +import lombok.extern.log4j.Log4j2; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = RuoYiApplication.class) +@ActiveProfiles("dev") +@Log4j2 +public class TestEncrypt { + + + private static final String key="Bd26jqDDJcdnBocn"; + private static final String iv ="oVKRQCjElggSbd8D"; + + /** + * 加密 + */ + @Test + public void text001(){ + + //加密 + List<ThCertReqDTO> thCertDTOs=new ArrayList<>(); + ThCertReqDTO thCertDTO = new ThCertReqDTO(); + thCertDTO.setUuid(UUID.randomUUID().toString()); + JSONObject jsonObject = new JSONObject(); + thCertDTO.setName("王五"); + thCertDTO.setIdcard("123456789012345679"); + thCertDTO.setBatchUuid("1ef0b81f-dcb7-62a9-ad8f-63e252089bc8"); + thCertDTO.setTrainOrgName("1234567890123"); + thCertDTO.setCertTime(LocalDateTime.now()); + thCertDTO.setCertUrl("https://p26.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/22f10850c5234b5285350743cfa16357"); + thCertDTOs.add(thCertDTO); + String jsonString = JSONObject.toJSONString(thCertDTOs); + String encrypt = encrypt(jsonString); + log.info("加密后为:"+encrypt); + + //解密 + String decrypt = ""; + try { + decrypt = decrypt(encrypt); + }catch (Exception e){ + throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL); + } + log.info("解密后为:"+decrypt); + } + + @Test + public void dec(){ + String mes = "nCVoBsCqZnKKYg0NBnsUPgjZpienDHaThN+mIcdcK9IhbjCEZj+ePQJUyLqXWY5+On7OiaCBPbdpx9NbsmR/IbIz0eVhh0BuI0iwbsB5vxkFd0LQHb8GkIM0aqMjwgQLHb1QQKYgne3Nh6/GsOlFveYQJPwiwXfdzsd/zKeWM6gohNBYuXDHAkwTboq/L7TFDVjTNfbvsu8pCVc0txoFmOTkvq5JUCsqBk4RvmM/AZ+yZjTCYkzkufg/sF5CFpbr36nCOzCGGJc1/+wm2qREzzC0HUxinhsXoMm6qJqa7/M3XDjWh/t6SDtxlzBLEgUcyEj2FL7vWLG9oB7EsnExcuY5YpQxJG45qGY6y9kYDF/swQaPsPIpGJhtczamAZuwi/DHuGWJsxqEWyWVEIc80gRek59j0vBMAmn/QVVP3Zu+qtxbJKRY0BAEaNKvIb66"; + String decrypt = ""; + try { + decrypt = decrypt(mes); + }catch (Exception e){ + throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL); + } + log.info("解密后为:"+decrypt); + } + + + private String decrypt(String data) { + try + { + byte[] encryptCode = Base64.getDecoder().decode(data);//先用base64解密 + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); + IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); + + cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); + + byte[] original = cipher.doFinal(encryptCode); + String originalString = new String(original); + return originalString.trim(); + } + catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } + } + + + private String encrypt(String data){ + try { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + int blockSize = cipher.getBlockSize(); + byte[] dataBytes = data.getBytes(Constants.UTF8); + int plaintextLength = dataBytes.length; + + if (plaintextLength % blockSize != 0) { + plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize)); + } + + byte[] plaintext = new byte[plaintextLength]; + System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); + + SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); + IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); // CBC模式,需要一个向量iv,可增加加密算法的强度 + + cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); + byte[] encrypted = cipher.doFinal(plaintext); + // BASE64做转码。 + String aseEncode = Base64.getEncoder().encodeToString(encrypted); + return aseEncode; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } + } + + + +} -- Gitblit v1.9.2