mirror of
https://gitee.com/jzsw-it/yexuejc-base.git
synced 2025-07-19 01:59:31 +08:00
1.优化代码
2.fileutil优化
This commit is contained in:
parent
616eefc067
commit
c85efeb4a6
@ -2,12 +2,12 @@ package com.yexuejc.base.encrypt;
|
|||||||
|
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.NoSuchPaddingException;
|
import javax.crypto.NoSuchPaddingException;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.security.*;
|
import java.security.*;
|
||||||
import java.security.interfaces.RSAPrivateKey;
|
import java.security.interfaces.RSAPrivateKey;
|
||||||
@ -18,7 +18,6 @@ import java.security.spec.X509EncodedKeySpec;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
//import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RSA加解密 配置模式
|
* RSA加解密 配置模式
|
||||||
@ -117,7 +116,7 @@ public class RSA {
|
|||||||
publicKeyStr = Base64.encodeBase64String(publicKey.getEncoded());
|
publicKeyStr = Base64.encodeBase64String(publicKey.getEncoded());
|
||||||
privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded());
|
privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded());
|
||||||
}
|
}
|
||||||
Map<String, String> keyPairMap = new HashMap<String, String>();
|
Map<String, String> keyPairMap = new HashMap<String, String>(2);
|
||||||
keyPairMap.put("publicKey", publicKeyStr);
|
keyPairMap.put("publicKey", publicKeyStr);
|
||||||
keyPairMap.put("privateKey", privateKeyStr);
|
keyPairMap.put("privateKey", privateKeyStr);
|
||||||
|
|
||||||
@ -302,7 +301,10 @@ public class RSA {
|
|||||||
throw new RuntimeException("加解密阀值为[" + maxBlock + "]的数据时发生异常", e);
|
throw new RuntimeException("加解密阀值为[" + maxBlock + "]的数据时发生异常", e);
|
||||||
}
|
}
|
||||||
byte[] resultDatas = out.toByteArray();
|
byte[] resultDatas = out.toByteArray();
|
||||||
IOUtils.closeQuietly(out);
|
try {
|
||||||
|
out.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
return resultDatas;
|
return resultDatas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ import java.security.interfaces.RSAPublicKey;
|
|||||||
/**
|
/**
|
||||||
* RSA加解密 证书模式
|
* RSA加解密 证书模式
|
||||||
* 依赖 {@link RSA}
|
* 依赖 {@link RSA}
|
||||||
|
*
|
||||||
* @ClassName: RSA2
|
* @ClassName: RSA2
|
||||||
* @Description:
|
* @Description:
|
||||||
* @author: maxf
|
* @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 {
|
public static RSAPrivateKey getPrivateKey(String filepath, String alias, String password) throws NoSuchAlgorithmException, KeyStoreException, IOException, CertificateException, UnrecoverableKeyException {
|
||||||
KeyStore ks = KeyStore.getInstance("JKS");
|
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());
|
return (RSAPrivateKey) ks.getKey(alias, password.toCharArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 {
|
public enum SignAlgorithm {
|
||||||
// The RSA signature algorithm
|
// The RSA signature algorithm
|
||||||
|
@ -77,7 +77,7 @@ public class AlgorithmUtil {
|
|||||||
* @throw
|
* @throw
|
||||||
*/
|
*/
|
||||||
public static int x36ConvertTo10(String pStr) {
|
public static int x36ConvertTo10(String pStr) {
|
||||||
if (pStr == "") {
|
if (StrUtil.isEmpty(pStr)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// 目标十进制数初始化为0
|
// 目标十进制数初始化为0
|
||||||
@ -117,12 +117,12 @@ public class AlgorithmUtil {
|
|||||||
if (hexString == null || hexString.length() % 2 != 0) {
|
if (hexString == null || hexString.length() % 2 != 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String bString = "", tmp;
|
StringBuffer buf = new StringBuffer();
|
||||||
for (int i = 0; i < hexString.length(); i++) {
|
for (int i = 0; i < hexString.length(); i++) {
|
||||||
tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString.substring(i, i + 1), 16));
|
String tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString.substring(i, i + 1), 16));
|
||||||
bString += tmp.substring(tmp.length() - 4);
|
buf.append(tmp.substring(tmp.length() - 4));
|
||||||
}
|
}
|
||||||
return bString;
|
return buf.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,7 +132,7 @@ public class AlgorithmUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static byte[] hexStringToBytes(String hexString) {
|
public static byte[] hexStringToBytes(String hexString) {
|
||||||
if (hexString == null || hexString.equals("")) {
|
if (hexString == null || "".equals(hexString)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
hexString = hexString.toUpperCase();
|
hexString = hexString.toUpperCase();
|
||||||
|
@ -109,9 +109,9 @@ public class DateTimeUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static LocalDate getWeek4First(LocalDate date) {
|
public static LocalDate getWeek4First(LocalDate date) {
|
||||||
TemporalAdjuster FIRST_OF_WEEK =
|
TemporalAdjuster firstOfWeek = TemporalAdjusters.ofDateAdjuster(localDate ->
|
||||||
TemporalAdjusters.ofDateAdjuster(localDate -> localDate.minusDays(localDate.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue()));
|
localDate.minusDays(localDate.getDayOfWeek().getValue() - DayOfWeek.MONDAY.getValue()));
|
||||||
return date.with(FIRST_OF_WEEK);
|
return date.with(firstOfWeek);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -130,9 +130,9 @@ public class DateTimeUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static LocalDate getWeek4Last(LocalDate date) {
|
public static LocalDate getWeek4Last(LocalDate date) {
|
||||||
TemporalAdjuster LAST_OF_WEEK =
|
TemporalAdjuster lastOfWeek = TemporalAdjusters.ofDateAdjuster(localDate ->
|
||||||
TemporalAdjusters.ofDateAdjuster(localDate -> localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue()));
|
localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue()));
|
||||||
return date.with(LAST_OF_WEEK);
|
return date.with(lastOfWeek);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -273,22 +273,22 @@ public class DateTimeUtil {
|
|||||||
return df.format(dateTime);
|
return df.format(dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
/** public static void main(String[] args) {
|
||||||
// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
// System.out.println(df.format(zonedDateTime2Date(ZonedDateTime.now())));
|
System.out.println(df.format(zonedDateTime2Date(ZonedDateTime.now())));
|
||||||
// System.out.println(df2.format(date2ZonedDateTime(new Date())));
|
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(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(getWeek4Last(LocalDate.parse("2018-02-10")).atTime(LocalTime.MAX)));
|
||||||
|
|
||||||
// System.out.println(format(getMonth4First().atTime(LocalTime.MIN)));
|
System.out.println(format(getMonth4First().atTime(LocalTime.MIN)));
|
||||||
// System.out.println(format(getMonth4Last().atTime(LocalTime.MAX)));
|
System.out.println(format(getMonth4Last().atTime(LocalTime.MAX)));
|
||||||
|
|
||||||
// System.out.println(format(getYear4First().atTime(LocalTime.MIN)));
|
System.out.println(format(getYear4First().atTime(LocalTime.MIN)));
|
||||||
// System.out.println(format(getYear4Last().atTime(LocalTime.MAX)));
|
System.out.println(format(getYear4Last().atTime(LocalTime.MAX)));
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,8 @@ public class ExcelImportUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static boolean validateExcel(String filePath) {
|
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 false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,9 +1,21 @@
|
|||||||
package com.yexuejc.base.util;
|
package com.yexuejc.base.util;
|
||||||
|
|
||||||
|
import sun.misc.BASE64Encoder;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
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
|
* @author maxf:yexue
|
||||||
* @className FileUtil
|
* @className FileUtil
|
||||||
* @description 工具类
|
* @description 工具类
|
||||||
@ -16,14 +28,31 @@ public class FileUtil {
|
|||||||
private static final String TYPE_TAR_GZ = ".tar.gz";
|
private static final String TYPE_TAR_GZ = ".tar.gz";
|
||||||
private static final String 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;
|
* <p>
|
||||||
|
* 根据文件名称截取.后的文件格式
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @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) {
|
public static void judeFileExists(File file) {
|
||||||
|
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
@ -49,9 +78,10 @@ public class FileUtil {
|
|||||||
* 4、File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀、后缀及文件所在的目录,如果不指定目录,则存放在系统的临时文件夹下。
|
* 4、File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀、后缀及文件所在的目录,如果不指定目录,则存放在系统的临时文件夹下。
|
||||||
* 5、除mkdirs方法外,以上方法在创建文件和目录时,必须保证目标文件不存在,而且父目录存在,否则会创建失败
|
* 5、除mkdirs方法外,以上方法在创建文件和目录时,必须保证目标文件不存在,而且父目录存在,否则会创建失败
|
||||||
* </pre>
|
* </pre>
|
||||||
|
*
|
||||||
|
* @return 创建成功、失败
|
||||||
*/
|
*/
|
||||||
public static void judeDirExists(File file) {
|
public static boolean judeDirExists(File file) {
|
||||||
|
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory()) {
|
||||||
System.out.println("dir exists");
|
System.out.println("dir exists");
|
||||||
@ -60,9 +90,223 @@ public class FileUtil {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
System.out.println("dir not exists, create it ...");
|
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);
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
@ -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位
|
// 获取第18位
|
||||||
String idcard18Code = idcard.substring(17, 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;
|
int sum17 = 0;
|
||||||
|
|
||||||
@ -290,11 +290,11 @@ public class IdcardValidator {
|
|||||||
|
|
||||||
String idcard17 = idcard.substring(0, 6) + year + idcard.substring(8);
|
String idcard17 = idcard.substring(0, 6) + year + idcard.substring(8);
|
||||||
|
|
||||||
char c[] = idcard17.toCharArray();
|
char[] c = idcard17.toCharArray();
|
||||||
String checkCode = "";
|
String checkCode = "";
|
||||||
|
|
||||||
// 将字符数组转为整型数组
|
// 将字符数组转为整型数组
|
||||||
int bit[] = converCharToInt(c);
|
int[] bit = converCharToInt(c);
|
||||||
|
|
||||||
int sum17 = 0;
|
int sum17 = 0;
|
||||||
sum17 = getPowerSum(bit);
|
sum17 = getPowerSum(bit);
|
||||||
|
@ -310,8 +310,16 @@ public class ImgUtil {
|
|||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public static byte[] byteImage(String imgUrl) throws IOException {
|
public static byte[] byteImage(String imgUrl) throws IOException {
|
||||||
FileInputStream fis = new FileInputStream(imgUrl);
|
byte[] rs;
|
||||||
byte[] rs = new byte[fis.available()];
|
FileInputStream fis = null;
|
||||||
|
try {
|
||||||
|
fis = new FileInputStream(imgUrl);
|
||||||
|
rs = new byte[fis.available()];
|
||||||
|
} finally {
|
||||||
|
if (fis != null) {
|
||||||
|
fis.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package com.yexuejc.base.util;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* map相关工具
|
* map相关工具
|
||||||
@ -36,10 +35,11 @@ public class MapRemoveNullUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Map removeNullKey(Map map) {
|
public static Map removeNullKey(Map map) {
|
||||||
Set set = map.keySet();
|
for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
|
||||||
for (Iterator iterator = set.iterator(); iterator.hasNext(); ) {
|
Map.Entry item = (Map.Entry) it.next();
|
||||||
Object obj = (Object) iterator.next();
|
if (StrUtil.isEmpty(item.getKey())) {
|
||||||
remove(obj, iterator);
|
it.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
@ -51,11 +51,11 @@ public class MapRemoveNullUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Map removeNullValue(Map map) {
|
public static Map removeNullValue(Map map) {
|
||||||
Set set = map.keySet();
|
for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
|
||||||
for (Iterator iterator = set.iterator(); iterator.hasNext(); ) {
|
Map.Entry item = (Map.Entry) it.next();
|
||||||
Object obj = (Object) iterator.next();
|
if (StrUtil.isEmpty(item.getValue())) {
|
||||||
Object value = (Object) map.get(obj);
|
it.remove();
|
||||||
remove(value, iterator);
|
}
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ public final class StrUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<String, String>(16);
|
||||||
String[] kv = null;
|
String[] kv = null;
|
||||||
for (String entry : entrys) {
|
for (String entry : entrys) {
|
||||||
if (isEmpty(entry)) {
|
if (isEmpty(entry)) {
|
||||||
@ -151,7 +151,7 @@ public final class StrUtil {
|
|||||||
* @param buf 初始字节数组
|
* @param buf 初始字节数组
|
||||||
* @return 转换后字符串
|
* @return 转换后字符串
|
||||||
*/
|
*/
|
||||||
public static String toHex(byte buf[]) {
|
public static String toHex(byte[] buf) {
|
||||||
StringBuffer strbuf = new StringBuffer(buf.length * 2);
|
StringBuffer strbuf = new StringBuffer(buf.length * 2);
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < buf.length; i++) {
|
for (i = 0; i < buf.length; i++) {
|
||||||
@ -181,7 +181,7 @@ public final class StrUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
md.update(str.getBytes());
|
md.update(str.getBytes());
|
||||||
byte tmp[] = md.digest();
|
byte[] tmp = md.digest();
|
||||||
return toHex(tmp);
|
return toHex(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,7 +215,7 @@ public final class StrUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
messageDigest.update(str.getBytes());
|
messageDigest.update(str.getBytes());
|
||||||
byte tmp[] = messageDigest.digest();
|
byte[] tmp = messageDigest.digest();
|
||||||
return toHex(tmp);
|
return toHex(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,8 +241,9 @@ public final class StrUtil {
|
|||||||
* @param str
|
* @param str
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
private static Pattern pattern = Pattern.compile("[0-9]*");
|
||||||
|
|
||||||
public static boolean isNumeric(String str) {
|
public static boolean isNumeric(String str) {
|
||||||
Pattern pattern = Pattern.compile("[0-9]*");
|
|
||||||
Matcher isNum = pattern.matcher(str);
|
Matcher isNum = pattern.matcher(str);
|
||||||
if (!isNum.matches()) {
|
if (!isNum.matches()) {
|
||||||
return false;
|
return false;
|
||||||
@ -262,16 +263,17 @@ public final class StrUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder coded = new StringBuilder();
|
StringBuilder coded = new StringBuilder();
|
||||||
|
Random random = new Random();
|
||||||
for (int i = 0; i < 13; i++) {
|
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));
|
coded.append(id.substring(0, 11));
|
||||||
for (int i = 0; i < 7; i++) {
|
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));
|
coded.append(id.substring(11));
|
||||||
for (int i = 0; i < 12; i++) {
|
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();
|
return coded.toString();
|
||||||
@ -338,7 +340,7 @@ public final class StrUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Map<String, Object> mapSort(Map<String, ?> sortedParams) {
|
public static Map<String, Object> mapSort(Map<String, ?> sortedParams) {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>(16);
|
||||||
List<String> keys = new ArrayList<>(sortedParams.keySet());
|
List<String> keys = new ArrayList<>(sortedParams.keySet());
|
||||||
Collections.sort(keys);
|
Collections.sort(keys);
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
@ -71,9 +71,12 @@ public class SysUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步执行代码块
|
* 异步执行接口
|
||||||
*/
|
*/
|
||||||
public interface ThreadRun {
|
public interface ThreadRun {
|
||||||
|
/**
|
||||||
|
* 执行代码块
|
||||||
|
*/
|
||||||
void execute();
|
void execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,8 @@ public class ThreeDES {
|
|||||||
private ThreeDES() {
|
private ThreeDES() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String IV = "1234567-";
|
public static String IV = "1234567-";
|
||||||
private final static String encoding = "utf-8";
|
public static String ENCODING = "utf-8";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DESCBC加密
|
* DESCBC加密
|
||||||
@ -46,7 +46,7 @@ public class ThreeDES {
|
|||||||
Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");
|
Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");
|
||||||
IvParameterSpec ips = new IvParameterSpec(IV.getBytes());
|
IvParameterSpec ips = new IvParameterSpec(IV.getBytes());
|
||||||
cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
|
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);
|
return Base64.encodeBase64URLSafeString(encryptData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ public class ThreeDES {
|
|||||||
|
|
||||||
byte[] decryptData = cipher.doFinal(Base64.decodeBase64(src));
|
byte[] decryptData = cipher.doFinal(Base64.decodeBase64(src));
|
||||||
|
|
||||||
return new String(decryptData, encoding);
|
return new String(decryptData, ENCODING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user