From c85efeb4a67f3dd50516609ed2ab3de984de068b Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Mon, 26 Nov 2018 18:13:05 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=202.file?= =?UTF-8?q?util=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yexuejc/base/encrypt/RSA.java | 10 +- .../java/com/yexuejc/base/encrypt/RSA2.java | 11 +- .../yexuejc/base/encrypt/SignAlgorithm.java | 8 +- .../com/yexuejc/base/util/AlgorithmUtil.java | 12 +- .../com/yexuejc/base/util/DateTimeUtil.java | 32 +-- .../yexuejc/base/util/ExcelImportUtil.java | 3 +- .../java/com/yexuejc/base/util/FileUtil.java | 262 +++++++++++++++++- .../yexuejc/base/util/IdcardValidator.java | 10 +- .../java/com/yexuejc/base/util/ImgUtil.java | 12 +- .../yexuejc/base/util/MapRemoveNullUtil.java | 20 +- .../java/com/yexuejc/base/util/StrUtil.java | 20 +- .../java/com/yexuejc/base/util/SysUtil.java | 5 +- .../java/com/yexuejc/base/util/ThreeDES.java | 8 +- 13 files changed, 343 insertions(+), 70 deletions(-) diff --git a/src/main/java/com/yexuejc/base/encrypt/RSA.java b/src/main/java/com/yexuejc/base/encrypt/RSA.java index 8df2e9a..d1f6ee2 100644 --- a/src/main/java/com/yexuejc/base/encrypt/RSA.java +++ b/src/main/java/com/yexuejc/base/encrypt/RSA.java @@ -2,12 +2,12 @@ package com.yexuejc.base.encrypt; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.io.IOUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.interfaces.RSAPrivateKey; @@ -18,7 +18,6 @@ import java.security.spec.X509EncodedKeySpec; import java.util.HashMap; import java.util.Map; -//import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; /** * RSA加解密 配置模式 @@ -117,7 +116,7 @@ public class RSA { publicKeyStr = Base64.encodeBase64String(publicKey.getEncoded()); privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded()); } - Map keyPairMap = new HashMap(); + Map keyPairMap = new HashMap(2); keyPairMap.put("publicKey", publicKeyStr); keyPairMap.put("privateKey", privateKeyStr); @@ -302,7 +301,10 @@ public class RSA { throw new RuntimeException("加解密阀值为[" + maxBlock + "]的数据时发生异常", e); } byte[] resultDatas = out.toByteArray(); - IOUtils.closeQuietly(out); + try { + out.close(); + } catch (IOException e) { + } return resultDatas; } diff --git a/src/main/java/com/yexuejc/base/encrypt/RSA2.java b/src/main/java/com/yexuejc/base/encrypt/RSA2.java index 508dbdd..17adc07 100644 --- a/src/main/java/com/yexuejc/base/encrypt/RSA2.java +++ b/src/main/java/com/yexuejc/base/encrypt/RSA2.java @@ -16,6 +16,7 @@ import java.security.interfaces.RSAPublicKey; /** * RSA加解密 证书模式 * 依赖 {@link RSA} + * * @ClassName: RSA2 * @Description: * @author: maxf @@ -55,7 +56,15 @@ public class RSA2 { */ public static RSAPrivateKey getPrivateKey(String filepath, String alias, String password) throws NoSuchAlgorithmException, KeyStoreException, IOException, CertificateException, UnrecoverableKeyException { KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(new FileInputStream(filepath), password.toCharArray()); + FileInputStream fileInputStream = null; + try { + fileInputStream = new FileInputStream(filepath); + ks.load(fileInputStream, password.toCharArray()); + } finally { + if (fileInputStream != null) { + fileInputStream.close(); + } + } return (RSAPrivateKey) ks.getKey(alias, password.toCharArray()); } diff --git a/src/main/java/com/yexuejc/base/encrypt/SignAlgorithm.java b/src/main/java/com/yexuejc/base/encrypt/SignAlgorithm.java index efbda90..139f86e 100644 --- a/src/main/java/com/yexuejc/base/encrypt/SignAlgorithm.java +++ b/src/main/java/com/yexuejc/base/encrypt/SignAlgorithm.java @@ -2,8 +2,12 @@ package com.yexuejc.base.encrypt; /** * 签名算法类型 - * 参考Hutool - * see: https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Signature + * + * @author maxf + * @ClassName SignAlgorithm + * @Description 签名算法类型 参考Hutool https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Signature + * @date 2018/11/26 10:25 + * @see 1.0 */ public enum SignAlgorithm { // The RSA signature algorithm diff --git a/src/main/java/com/yexuejc/base/util/AlgorithmUtil.java b/src/main/java/com/yexuejc/base/util/AlgorithmUtil.java index 206021f..faef09f 100644 --- a/src/main/java/com/yexuejc/base/util/AlgorithmUtil.java +++ b/src/main/java/com/yexuejc/base/util/AlgorithmUtil.java @@ -77,7 +77,7 @@ public class AlgorithmUtil { * @throw */ public static int x36ConvertTo10(String pStr) { - if (pStr == "") { + if (StrUtil.isEmpty(pStr)) { return 0; } // 目标十进制数初始化为0 @@ -117,12 +117,12 @@ public class AlgorithmUtil { if (hexString == null || hexString.length() % 2 != 0) { return null; } - String bString = "", tmp; + StringBuffer buf = new StringBuffer(); for (int i = 0; i < hexString.length(); i++) { - tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString.substring(i, i + 1), 16)); - bString += tmp.substring(tmp.length() - 4); + String tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString.substring(i, i + 1), 16)); + buf.append(tmp.substring(tmp.length() - 4)); } - return bString; + return buf.toString(); } /** @@ -132,7 +132,7 @@ public class AlgorithmUtil { * @return */ public static byte[] hexStringToBytes(String hexString) { - if (hexString == null || hexString.equals("")) { + if (hexString == null || "".equals(hexString)) { return null; } hexString = hexString.toUpperCase(); diff --git a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java index 0bf9db1..50533e5 100644 --- a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java +++ b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java @@ -109,9 +109,9 @@ public class DateTimeUtil { * @return */ public static LocalDate getWeek4First(LocalDate date) { - TemporalAdjuster FIRST_OF_WEEK = - TemporalAdjusters.ofDateAdjuster(localDate -> localDate.minusDays(localDate.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue())); - return date.with(FIRST_OF_WEEK); + TemporalAdjuster firstOfWeek = TemporalAdjusters.ofDateAdjuster(localDate -> + localDate.minusDays(localDate.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue())); + return date.with(firstOfWeek); } /** @@ -130,9 +130,9 @@ public class DateTimeUtil { * @return */ public static LocalDate getWeek4Last(LocalDate date) { - TemporalAdjuster LAST_OF_WEEK = - TemporalAdjusters.ofDateAdjuster(localDate -> localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue())); - return date.with(LAST_OF_WEEK); + TemporalAdjuster lastOfWeek = TemporalAdjusters.ofDateAdjuster(localDate -> + localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue())); + return date.with(lastOfWeek); } /** @@ -273,22 +273,22 @@ public class DateTimeUtil { return df.format(dateTime); } - public static void main(String[] args) { -// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// System.out.println(df.format(zonedDateTime2Date(ZonedDateTime.now()))); -// System.out.println(df2.format(date2ZonedDateTime(new Date()))); + /** public static void main(String[] args) { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + System.out.println(df.format(zonedDateTime2Date(ZonedDateTime.now()))); + System.out.println(df2.format(date2ZonedDateTime(new Date()))); -// System.out.println(getWeek4First()); + System.out.println(getWeek4First()); System.out.println(format(getWeek4First(LocalDate.parse("2018-02-10")).atTime(LocalTime.MIN))); System.out.println(format(getWeek4Last(LocalDate.parse("2018-02-10")).atTime(LocalTime.MAX))); -// System.out.println(format(getMonth4First().atTime(LocalTime.MIN))); -// System.out.println(format(getMonth4Last().atTime(LocalTime.MAX))); + System.out.println(format(getMonth4First().atTime(LocalTime.MIN))); + System.out.println(format(getMonth4Last().atTime(LocalTime.MAX))); -// System.out.println(format(getYear4First().atTime(LocalTime.MIN))); -// System.out.println(format(getYear4Last().atTime(LocalTime.MAX))); + System.out.println(format(getYear4First().atTime(LocalTime.MIN))); + System.out.println(format(getYear4Last().atTime(LocalTime.MAX))); - } + }*/ } diff --git a/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java b/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java index 92ef717..bf4e6af 100644 --- a/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java +++ b/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java @@ -41,7 +41,8 @@ public class ExcelImportUtil { * @return */ public static boolean validateExcel(String filePath) { - if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) { + boolean b = filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath)); + if (b) { return false; } return true; diff --git a/src/main/java/com/yexuejc/base/util/FileUtil.java b/src/main/java/com/yexuejc/base/util/FileUtil.java index ed99e4b..c8419a1 100644 --- a/src/main/java/com/yexuejc/base/util/FileUtil.java +++ b/src/main/java/com/yexuejc/base/util/FileUtil.java @@ -1,9 +1,21 @@ package com.yexuejc.base.util; +import sun.misc.BASE64Encoder; + import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; +import java.math.BigInteger; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.zip.CRC32; /** + * 文件工具类 + * * @author maxf:yexue * @className FileUtil * @description 工具类 @@ -16,14 +28,31 @@ public class FileUtil { private static final String TYPE_TAR_GZ = ".tar.gz"; private static final String TAR_GZ = "tar.gz"; - public static String getFileType(String fileName) { - if (fileName.lastIndexOf(TYPE_TAR_GZ) > 0) { - return TAR_GZ; + /** + * 获取文件类型:不适合所有 + *

+ * 根据文件名称截取.后的文件格式 + *

+ * + * @param fileName + * @return + */ + public static String getFileType(String fileName) throws FileNotFoundException { + try { + if (fileName.lastIndexOf(TYPE_TAR_GZ) > 0) { + return TAR_GZ; + } + return fileName.substring(fileName.lastIndexOf(".") + 1); + } catch (Exception e) { + throw new FileNotFoundException("文件类型未能解析"); } - return fileName.substring(fileName.lastIndexOf(".") + 1); } - // 判断文件是否存在 + /** + * 判断文件是否存在 + * + * @param file + */ public static void judeFileExists(File file) { if (file.exists()) { @@ -49,9 +78,10 @@ public class FileUtil { * 4、File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀、后缀及文件所在的目录,如果不指定目录,则存放在系统的临时文件夹下。 * 5、除mkdirs方法外,以上方法在创建文件和目录时,必须保证目标文件不存在,而且父目录存在,否则会创建失败 * + * + * @return 创建成功、失败 */ - public static void judeDirExists(File file) { - + public static boolean judeDirExists(File file) { if (file.exists()) { if (file.isDirectory()) { System.out.println("dir exists"); @@ -60,9 +90,223 @@ public class FileUtil { } } else { System.out.println("dir not exists, create it ..."); - file.mkdirs(); + return file.mkdirs(); } - + return false; } + /** + * 获取文件sha1 + * + * @param file + * @return + */ + public static String sha1(File file) { + FileInputStream in = null; + try { + in = new FileInputStream(file); + MessageDigest digest = MessageDigest.getInstance("SHA-1"); + byte[] buffer = new byte[1024 * 1024 * 10]; + + int len = 0; + while ((len = in.read(buffer)) > 0) { + digest.update(buffer, 0, len); + } + String sha1 = new BigInteger(1, digest.digest()).toString(16); + int length = 40 - sha1.length(); + if (length > 0) { + for (int i = 0; i < length; i++) { + sha1 = "0" + sha1; + } + } + return sha1; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException e) { + } + } + return null; + } + + + /*** + * 计算SHA1码 + * + * @return String 适用于上G大的文件 + * @throws NoSuchAlgorithmException + * */ + public static String sha1ByBigFile(File file) { + MessageDigest messagedigest = null; + try { + messagedigest = MessageDigest.getInstance("SHA-1"); + FileInputStream in = new FileInputStream(file); + FileChannel ch = in.getChannel(); + MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length()); + messagedigest.update(byteBuffer); + return StrUtil.toHex(messagedigest.digest()); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 文件md5 + * + * @param file + * @return + */ + public static String md5(File file) { + FileInputStream in = null; + try { + in = new FileInputStream(file); + MessageDigest digest = MessageDigest.getInstance("MD5"); + byte[] buffer = new byte[1024 * 1024 * 10]; + + int len = 0; + while ((len = in.read(buffer)) > 0) { + digest.update(buffer, 0, len); + } + String md5 = new BigInteger(1, digest.digest()).toString(16); + int length = 32 - md5.length(); + if (length > 0) { + for (int i = 0; i < length; i++) { + md5 = "0" + md5; + } + } + return md5; + } catch (IOException e) { + System.out.println(e); + } catch (NoSuchAlgorithmException e) { + System.out.println(e); + } finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException e) { + System.out.println(e); + } + } + return null; + } + + /** + * 对一个文件获取md5值 + * + * @return md5串 + * @throws NoSuchAlgorithmException + */ + public static String md5ByBigFile(File file) { + + MessageDigest messagedigest = null; + try { + messagedigest = MessageDigest.getInstance("MD5"); + FileInputStream in = new FileInputStream(file); + FileChannel ch = in.getChannel(); + MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, + file.length()); + messagedigest.update(byteBuffer); + return StrUtil.toHex(messagedigest.digest()); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 获取文件CRC32码 + * + * @return String + */ + public static String crc32(File file) { + CRC32 crc32 = new CRC32(); + // MessageDigest.get + FileInputStream fileInputStream = null; + try { + fileInputStream = new FileInputStream(file); + byte[] buffer = new byte[8192]; + int length; + while ((length = fileInputStream.read(buffer)) != -1) { + crc32.update(buffer, 0, length); + } + return crc32.getValue() + ""; + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } catch (IOException e) { + e.printStackTrace(); + return null; + } finally { + try { + if (fileInputStream != null) { + fileInputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 获取文件base64 + * + * @param file + * @return + */ + public static String base64(File file) { + FileInputStream fileInputStream = null; + byte[] data = null; + // 读取图片字节数组 + try { + fileInputStream = new FileInputStream(file); + data = new byte[fileInputStream.available()]; + fileInputStream.read(data); + fileInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + // 对字节数组Base64编码 + BASE64Encoder encoder = new BASE64Encoder(); + return encoder.encode(data); + } + + + /* public static void main(String[] args) { + + String s1 = base64(new File("C:\\Users\\Administrator\\Desktop\\a.html")); + System.out.println(s1); + + String s = sha1(new File("C:\\Users\\Administrator\\Desktop\\a.html")); + String s2 = sha1ByBigFile(new File("C:\\Users\\Administrator\\Desktop\\a.html")); + System.out.println(s); + System.out.println(s2); + + + String md5 = md5(new File("C:\\Users\\Administrator\\Desktop\\a.html")); + String md52 = md5ByBigFile(new File("C:\\Users\\Administrator\\Desktop\\a.html")); + System.out.println(md5); + System.out.println(md52); + + + String crc32 = crc32(new File("C:\\Users\\Administrator\\Desktop\\a.html")); + System.out.println(crc32); + }*/ } diff --git a/src/main/java/com/yexuejc/base/util/IdcardValidator.java b/src/main/java/com/yexuejc/base/util/IdcardValidator.java index a13a6eb..816ec9b 100644 --- a/src/main/java/com/yexuejc/base/util/IdcardValidator.java +++ b/src/main/java/com/yexuejc/base/util/IdcardValidator.java @@ -47,7 +47,7 @@ public class IdcardValidator { /** * 每位加权因子 */ - private static int power[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; + private static int[] power = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; /** * 验证所有的身份证的合法性 @@ -167,9 +167,9 @@ public class IdcardValidator { // 获取第18位 String idcard18Code = idcard.substring(17, 18); - char c[] = idcard17.toCharArray(); + char[] c = idcard17.toCharArray(); - int bit[] = converCharToInt(c); + int[] bit = converCharToInt(c); int sum17 = 0; @@ -290,11 +290,11 @@ public class IdcardValidator { String idcard17 = idcard.substring(0, 6) + year + idcard.substring(8); - char c[] = idcard17.toCharArray(); + char[] c = idcard17.toCharArray(); String checkCode = ""; // 将字符数组转为整型数组 - int bit[] = converCharToInt(c); + int[] bit = converCharToInt(c); int sum17 = 0; sum17 = getPowerSum(bit); diff --git a/src/main/java/com/yexuejc/base/util/ImgUtil.java b/src/main/java/com/yexuejc/base/util/ImgUtil.java index 67a2b75..7aa3dbc 100644 --- a/src/main/java/com/yexuejc/base/util/ImgUtil.java +++ b/src/main/java/com/yexuejc/base/util/ImgUtil.java @@ -310,8 +310,16 @@ public class ImgUtil { * @throws IOException */ public static byte[] byteImage(String imgUrl) throws IOException { - FileInputStream fis = new FileInputStream(imgUrl); - byte[] rs = new byte[fis.available()]; + byte[] rs; + FileInputStream fis = null; + try { + fis = new FileInputStream(imgUrl); + rs = new byte[fis.available()]; + } finally { + if (fis != null) { + fis.close(); + } + } return rs; } diff --git a/src/main/java/com/yexuejc/base/util/MapRemoveNullUtil.java b/src/main/java/com/yexuejc/base/util/MapRemoveNullUtil.java index 0062329..f71bf32 100644 --- a/src/main/java/com/yexuejc/base/util/MapRemoveNullUtil.java +++ b/src/main/java/com/yexuejc/base/util/MapRemoveNullUtil.java @@ -3,7 +3,6 @@ package com.yexuejc.base.util; import java.util.Collection; import java.util.Iterator; import java.util.Map; -import java.util.Set; /** * map相关工具 @@ -36,10 +35,11 @@ public class MapRemoveNullUtil { * @return */ public static Map removeNullKey(Map map) { - Set set = map.keySet(); - for (Iterator iterator = set.iterator(); iterator.hasNext(); ) { - Object obj = (Object) iterator.next(); - remove(obj, iterator); + for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) { + Map.Entry item = (Map.Entry) it.next(); + if (StrUtil.isEmpty(item.getKey())) { + it.remove(); + } } return map; } @@ -51,11 +51,11 @@ public class MapRemoveNullUtil { * @return */ public static Map removeNullValue(Map map) { - Set set = map.keySet(); - for (Iterator iterator = set.iterator(); iterator.hasNext(); ) { - Object obj = (Object) iterator.next(); - Object value = (Object) map.get(obj); - remove(value, iterator); + for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) { + Map.Entry item = (Map.Entry) it.next(); + if (StrUtil.isEmpty(item.getValue())) { + it.remove(); + } } return map; } diff --git a/src/main/java/com/yexuejc/base/util/StrUtil.java b/src/main/java/com/yexuejc/base/util/StrUtil.java index 7766a02..9664005 100644 --- a/src/main/java/com/yexuejc/base/util/StrUtil.java +++ b/src/main/java/com/yexuejc/base/util/StrUtil.java @@ -126,7 +126,7 @@ public final class StrUtil { return null; } - Map map = new HashMap(); + Map map = new HashMap(16); String[] kv = null; for (String entry : entrys) { if (isEmpty(entry)) { @@ -151,7 +151,7 @@ public final class StrUtil { * @param buf 初始字节数组 * @return 转换后字符串 */ - public static String toHex(byte buf[]) { + public static String toHex(byte[] buf) { StringBuffer strbuf = new StringBuffer(buf.length * 2); int i; for (i = 0; i < buf.length; i++) { @@ -181,7 +181,7 @@ public final class StrUtil { return null; } md.update(str.getBytes()); - byte tmp[] = md.digest(); + byte[] tmp = md.digest(); return toHex(tmp); } @@ -215,7 +215,7 @@ public final class StrUtil { return null; } messageDigest.update(str.getBytes()); - byte tmp[] = messageDigest.digest(); + byte[] tmp = messageDigest.digest(); return toHex(tmp); } @@ -241,8 +241,9 @@ public final class StrUtil { * @param str * @return */ + private static Pattern pattern = Pattern.compile("[0-9]*"); + public static boolean isNumeric(String str) { - Pattern pattern = Pattern.compile("[0-9]*"); Matcher isNum = pattern.matcher(str); if (!isNum.matches()) { return false; @@ -262,16 +263,17 @@ public final class StrUtil { } StringBuilder coded = new StringBuilder(); + Random random = new Random(); for (int i = 0; i < 13; i++) { - coded.append(HEX_CHAR[(int) (Math.random() * 15L) + 1]); + coded.append(HEX_CHAR[random.nextInt(16)]); } coded.append(id.substring(0, 11)); for (int i = 0; i < 7; i++) { - coded.append(HEX_CHAR[(int) (Math.random() * 15L) + 1]); + coded.append(HEX_CHAR[random.nextInt(16)]); } coded.append(id.substring(11)); for (int i = 0; i < 12; i++) { - coded.append(HEX_CHAR[(int) (Math.random() * 15L) + 1]); + coded.append(HEX_CHAR[random.nextInt(16)]); } return coded.toString(); @@ -338,7 +340,7 @@ public final class StrUtil { * @return */ public static Map mapSort(Map sortedParams) { - Map map = new HashMap<>(); + Map map = new HashMap<>(16); List keys = new ArrayList<>(sortedParams.keySet()); Collections.sort(keys); int index = 0; diff --git a/src/main/java/com/yexuejc/base/util/SysUtil.java b/src/main/java/com/yexuejc/base/util/SysUtil.java index 5094146..4b0758f 100644 --- a/src/main/java/com/yexuejc/base/util/SysUtil.java +++ b/src/main/java/com/yexuejc/base/util/SysUtil.java @@ -71,9 +71,12 @@ public class SysUtil { } /** - * 异步执行代码块 + * 异步执行接口 */ public interface ThreadRun { + /** + * 执行代码块 + */ void execute(); } } diff --git a/src/main/java/com/yexuejc/base/util/ThreeDES.java b/src/main/java/com/yexuejc/base/util/ThreeDES.java index 28e14e1..ba8e630 100644 --- a/src/main/java/com/yexuejc/base/util/ThreeDES.java +++ b/src/main/java/com/yexuejc/base/util/ThreeDES.java @@ -23,8 +23,8 @@ public class ThreeDES { private ThreeDES() { } - private static final String IV = "1234567-"; - private final static String encoding = "utf-8"; + public static String IV = "1234567-"; + public static String ENCODING = "utf-8"; /** * DESCBC加密 @@ -46,7 +46,7 @@ public class ThreeDES { Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding"); IvParameterSpec ips = new IvParameterSpec(IV.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, deskey, ips); - byte[] encryptData = cipher.doFinal(src.getBytes(encoding)); + byte[] encryptData = cipher.doFinal(src.getBytes(ENCODING)); return Base64.encodeBase64URLSafeString(encryptData); } @@ -72,7 +72,7 @@ public class ThreeDES { byte[] decryptData = cipher.doFinal(Base64.decodeBase64(src)); - return new String(decryptData, encoding); + return new String(decryptData, ENCODING); } /**