1.台账模块新增字段迁移微服务
This commit is contained in:
@@ -12,6 +12,9 @@ import java.util.regex.Pattern;
|
||||
*/
|
||||
public class Sm4Utils
|
||||
{
|
||||
//全局秘钥
|
||||
public final static String globalSecretKey = "11HDESaAhiHHug2z";
|
||||
|
||||
private String secretKey = "";
|
||||
|
||||
private String iv = "";
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
package com.njcn.common.utils.sm;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
|
||||
/**
|
||||
*字符串 DESede(3DES) 加密
|
||||
* ECB模式/使用PKCS7方式填充不足位,目前给的密钥是192位
|
||||
* 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的
|
||||
* 加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加
|
||||
* 密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的
|
||||
* 密钥,P代表明文,C代表密表,这样,
|
||||
* 3DES加密过程为:C=Ek3(Dk2(Ek1(P)))
|
||||
* 3DES解密过程为:P=Dk1((EK2(Dk3(C)))
|
||||
* @date 2023/8/28
|
||||
*/
|
||||
@Slf4j
|
||||
public class ThreeDesUtil {
|
||||
|
||||
/**
|
||||
* @param args在java中调用sun公司提供的3DES加密解密算法时,需要使
|
||||
* 用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:
|
||||
*jce.jar
|
||||
*security/US_export_policy.jar
|
||||
*security/local_policy.jar
|
||||
*ext/sunjce_provider.jar
|
||||
*定义加密算法,可用 DES,DESede,Blowfish
|
||||
*/
|
||||
|
||||
private static final String Algorithm = "DESede";
|
||||
// 24字节的密钥
|
||||
private static final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58, (byte) 0x88, 0x10,
|
||||
0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xCB, (byte) 0xDD,
|
||||
0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36,
|
||||
(byte) 0xE2 };
|
||||
|
||||
|
||||
//keybyte为加密密钥,长度为24字节
|
||||
//src为被加密的数据缓冲区(源)
|
||||
public static byte[] encryptMode(byte[] keybyte,byte[] src){
|
||||
try {
|
||||
//生成密钥
|
||||
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
|
||||
//加密
|
||||
Cipher c1 = Cipher.getInstance(Algorithm);
|
||||
c1.init(Cipher.ENCRYPT_MODE, deskey);
|
||||
//在单一方面的加密或解密
|
||||
return c1.doFinal(src);
|
||||
} catch (java.security.NoSuchAlgorithmException e1) {
|
||||
log.error(e1.getMessage());
|
||||
}catch(javax.crypto.NoSuchPaddingException e2){
|
||||
log.error(e2.getMessage());
|
||||
}catch(Exception e3){
|
||||
log.error(e3.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//keybyte为加密密钥,长度为24字节
|
||||
//src为解密后的缓冲区
|
||||
public static byte[] decryptMode(byte[] keybyte,byte[] src){
|
||||
try {
|
||||
//生成密钥
|
||||
SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
|
||||
//解密
|
||||
Cipher c1 = Cipher.getInstance(Algorithm);
|
||||
c1.init(Cipher.DECRYPT_MODE, deskey);
|
||||
return c1.doFinal(src);
|
||||
} catch (java.security.NoSuchAlgorithmException e1) {
|
||||
log.error(e1.getMessage());
|
||||
}catch(javax.crypto.NoSuchPaddingException e2){
|
||||
log.error(e2.getMessage());
|
||||
}catch(Exception e3){
|
||||
log.error(e3.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//转换成十六进制字符串
|
||||
public static String byte2Hex(byte[] b){
|
||||
String hs="";
|
||||
String stmp="";
|
||||
for(int n=0; n<b.length; n++){
|
||||
stmp = (Integer.toHexString(b[n]& 0XFF));
|
||||
if(stmp.length()==1){
|
||||
hs = hs + "0" + stmp;
|
||||
}else{
|
||||
hs = hs + stmp;
|
||||
}
|
||||
if(n<b.length-1) {
|
||||
hs=hs+":";
|
||||
}
|
||||
}
|
||||
return hs.toUpperCase();
|
||||
}
|
||||
|
||||
//对数据进行3des加密
|
||||
public static String encryptThreeDes_64(String str){
|
||||
byte[] encoded = encryptMode(keyBytes, str.getBytes());
|
||||
return (new sun.misc.BASE64Encoder()).encode(encoded);
|
||||
}
|
||||
|
||||
|
||||
//字节码转换成16进制字符串
|
||||
public static String byte2hex(byte bytes[]){
|
||||
StringBuffer retString = new StringBuffer();
|
||||
for (int i = 0; i < bytes.length; ++i)
|
||||
{
|
||||
retString.append(Integer.toHexString(0x0100 + (bytes[i] & 0x00FF)).substring(1).toUpperCase());
|
||||
}
|
||||
return retString.toString();
|
||||
}
|
||||
|
||||
//将16进制字符串转换成字节码
|
||||
public static byte[] hex2byte(String hex) {
|
||||
byte[] bts = new byte[hex.length() / 2];
|
||||
for (int i = 0; i < bts.length; i++) {
|
||||
bts[i] = (byte) Integer.parseInt(hex.substring(2*i, 2*i+2), 16);
|
||||
}
|
||||
return bts;
|
||||
}
|
||||
|
||||
//对Cookie进行加密
|
||||
public static String encryptThreeDes(String strencoded){
|
||||
byte[] encoded = encryptMode(keyBytes, strencoded.getBytes());
|
||||
return byte2hex(encoded);
|
||||
}
|
||||
|
||||
//对Cookie进行解密
|
||||
public static String decryptThreeDes(String strdecrypt){
|
||||
byte[] decrypt = decryptMode(keyBytes,hex2byte(strdecrypt));
|
||||
return new String(decrypt);
|
||||
}
|
||||
|
||||
|
||||
//判断数据完整性
|
||||
public static Boolean hex(String psw,String strkey){
|
||||
boolean flag=true;
|
||||
String key =encryptThreeDes_64(strkey);
|
||||
if(!psw.equals(key)) {
|
||||
flag=false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -9,4 +9,10 @@ public interface BusinessResource {
|
||||
* App
|
||||
*/
|
||||
String APP_RESOURCE = "APP";
|
||||
|
||||
|
||||
/***
|
||||
* Web
|
||||
*/
|
||||
String WEB_RESOURCE = "WEB";
|
||||
}
|
||||
|
||||
@@ -23,6 +23,14 @@ public interface BusinessTopic {
|
||||
String NJCN_APP_WARN_TOPIC = "njcnAppWarnTopic";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/********************************数据中心*********************************/
|
||||
|
||||
String RMP_EVENT_DETAIL_TOPIC = "rmpEventDetailTopic";
|
||||
|
||||
|
||||
interface AppDataTag {
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.mq.message;
|
||||
|
||||
import com.njcn.middle.rocket.domain.BaseMessage;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* pqs
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2023/8/24
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class RmpEventDetailMessage extends BaseMessage {
|
||||
|
||||
private List<String> eventIds;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.njcn.mq.template;
|
||||
|
||||
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
||||
import com.njcn.mq.constant.BusinessResource;
|
||||
import com.njcn.mq.constant.BusinessTopic;
|
||||
import com.njcn.mq.message.AppEventMessage;
|
||||
import com.njcn.mq.message.RmpEventDetailMessage;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* pqs
|
||||
*
|
||||
* @author cdf
|
||||
* @date 2023/8/24
|
||||
*/
|
||||
@Component
|
||||
public class RmpEventDetailMessageTemplate extends RocketMQEnhanceTemplate {
|
||||
public RmpEventDetailMessageTemplate(RocketMQTemplate template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
public SendResult sendEventDetail(RmpEventDetailMessage rmpEventDetailMessage) {
|
||||
rmpEventDetailMessage.setSource(BusinessResource.WEB_RESOURCE);
|
||||
return send(BusinessTopic.RMP_EVENT_DETAIL_TOPIC, rmpEventDetailMessage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user