Merge branch 'master' into 1.4

# Conflicts:
#	crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java
#	crmeb/sql/Crmeb_1.3.4.sql
This commit is contained in:
daZongZi
2025-07-31 16:47:46 +08:00
3 changed files with 9068 additions and 59 deletions

View File

@@ -114,7 +114,7 @@ WEBPC管理端https://admin.java.crmeb.net<br>
账号密码: demo/crmeb.com<br> 账号密码: demo/crmeb.com<br>
自己搭建演示账号 自己搭建演示账号
移动端 18292417675 / crmeb@123456 移动端 18292417675 / Crmeb_123456
管理端 admin / 123456 管理端 admin / 123456
[想了解CRMEB开源商城系统Java版整体框架你可以戳这里快速掌握](https://doc.crmeb.com/java/crmeb_java/2049) [想了解CRMEB开源商城系统Java版整体框架你可以戳这里快速掌握](https://doc.crmeb.com/java/crmeb_java/2049)

View File

@@ -1,34 +1,21 @@
package com.zbkj.common.utils; package com.zbkj.common.utils;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zbkj.common.config.CrmebConfig;
import com.zbkj.common.constants.Constants; import com.zbkj.common.constants.Constants;
import com.zbkj.common.exception.CrmebException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.Security;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -37,56 +24,35 @@ import java.util.regex.Pattern;
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ] * | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved. * | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权 * | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com> * | Author: CRMEB Team <admin@crmeb.com>
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
*/ */
@Component
public class CrmebUtil { public class CrmebUtil {
@Autowired public static String encryptPassword(String pwd, String key) {
CrmebConfig crmebConfig; DES des = new DES(getDESSercretKey(key));
byte[] result = des.encrypt(pwd);
public static String encryptPassword(String pwd, String key){ return Base64.encode(result);
try {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Key _key = getDESSercretKey(key);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, _key);
byte[] data = pwd.getBytes(StandardCharsets.UTF_8);
byte[] result = cipher.doFinal(data);
return java.util.Base64.getEncoder().encodeToString(result);
}catch (Exception e){
throw new CrmebException("密码处理异常");
}
} }
/** /**
* 解密密码 * 解密密码
*/ */
public static String decryptPassowrd(String pwd, String key) public static String decryptPassowrd(String pwd, String key) {
throws Exception { DES des = new DES(getDESSercretKey(key));
Security.addProvider(new com.sun.crypto.provider.SunJCE()); return des.decryptStr(pwd);
Key aKey = getDESSercretKey(key);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, aKey);
byte[] data = java.util.Base64.getDecoder().decode(pwd);
byte[] result = cipher.doFinal(data);
return new String(result, StandardCharsets.UTF_8);
} }
/** /**
* 获得DES加密秘钥 * 获得DES加密秘钥
* @param key * @param key
* @return * @return
* @throws UnsupportedEncodingException
*/ */
public static SecretKey getDESSercretKey(String key) throws UnsupportedEncodingException { public static byte[] getDESSercretKey(String key) {
byte[] result = new byte[8]; byte[] result = new byte[8];
byte[] keys = null; byte[] keys = null;
keys = key.getBytes(StandardCharsets.UTF_8); keys = key.getBytes(StandardCharsets.UTF_8);
@@ -97,7 +63,7 @@ public class CrmebUtil {
result[i] = 0x01; result[i] = 0x01;
} }
} }
return new SecretKeySpec(result, "DES"); return result;
} }
/** /**
@@ -147,8 +113,24 @@ public class CrmebUtil {
* @param args String[] 字符串数组 * @param args String[] 字符串数组
*/ */
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
//System.out.println(encryptPassword("crmeb@123456", "18292417675")); // System.out.println(encryptPassword("123456", "admin"));
System.out.println(decryptPassowrd("9n8S0bwrG6iXHK3vXWqppA==", "admin")); // System.out.println(decryptPassowrd("", ""));
String key = "123456";
String data = "中国123ABCabc";
System.out.println("原始数据:" + data);
String encryptPassword = encryptPassword(data, key);
System.out.println("加密结果:" + encryptPassword);
String decryptPassowrd = decryptPassowrd(encryptPassword, key);
System.out.println("解密结果:" + decryptPassowrd);
// 执行结果如下:
// 原始数据中国123ABCabc
// 加密结果5JNGj04iE/XUuTZM75zMrA==
// 解密结果中国123ABCabc
System.out.println(encryptPassword("crmeb@123456", "18292417675"));
// 执行结果f6mcpGQ8NEmwbab2TlkpUg==
// 与 SQL 中的数据一致
} }
/** /**
@@ -409,7 +391,7 @@ public class CrmebUtil {
} }
ip = request.getRemoteAddr(); ip = request.getRemoteAddr();
if(ip.equals("0:0:0:0:0:0:0:1")){ if("0:0:0:0:0:0:0:1".equals(ip)){
//本地 localhost访问 ipv6 //本地 localhost访问 ipv6
ip = "127.0.0.1"; ip = "127.0.0.1";
} }
@@ -432,11 +414,11 @@ public class CrmebUtil {
return false; return false;
} }
if(ip.equals("unKnown")){ if("unKnown".equals(ip)){
return false; return false;
} }
if(ip.equals("unknown")){ if("unknown".equals(ip)){
return false; return false;
} }
@@ -747,7 +729,7 @@ public class CrmebUtil {
/** /**
* unicode编码转换为汉字 * unicode编码转换为汉字
* @param unicodeStr 待转化的编码 * @param unicodeStr 待转化的编码
* @return 返回转化后的汉 * @return 返回转化后的汉
*/ */
public static String UnicodeToCN(String unicodeStr) { public static String UnicodeToCN(String unicodeStr) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))"); Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
@@ -895,14 +877,10 @@ public class CrmebUtil {
* 手机号脱敏处理 * 手机号脱敏处理
* @param phone 手机号 * @param phone 手机号
*/ */
public String maskMobile(String phone) { public static String maskMobile(String phone) {
if (StrUtil.isBlank(phone)) { if (StrUtil.isBlank(phone)) {
return ""; return "";
} }
if(crmebConfig.getDemoSite()){ return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
return phone;
} }
} }

9031
crmeb/sql/Crmeb_1.3.4.sql Normal file
View File

File diff suppressed because one or more lines are too long