
org.hothub.module.common.utils.CommonUtils Maven / Gradle / Ivy
The newest version!
package org.hothub.module.common.utils;
import org.hothub.module.common.base.Platform;
import org.hothub.module.common.uuid.SnowFlake;
import org.hothub.module.common.uuid.SnowFlakeLite;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.Random;
import java.util.UUID;
/**
* 通用工具类
*/
public class CommonUtils {
/**
* 获取UUID - 32位字符串
*
* @return String
**/
public static String getUUID() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
/**
* 获取UUID - 18位整数
*
* @return Long
**/
public static Long getSFID() {
return SnowFlake.getInstance().nextId();
}
/**
* 获取短的SFID - 16位整数
*
* @return 53bit长度
**/
public static Long getLiteSFID() {
return SnowFlakeLite.nextId();
}
/**
* 生成短信验证码
*
* @return Integer
**/
public static Integer createSmsCode() {
return new Random().nextInt(8999) + 1000;
}
/**
* 生成密码盐
*
* @return String
**/
public static String createSalt() {
Random RANDOM = new SecureRandom();
byte[] salt = new byte[6];
RANDOM.nextBytes(salt);
Base64.Encoder encoder = Base64.getEncoder();
return encoder.encodeToString(salt);
}
/**
* MD5加密
*
* @param text 字符串
* @return String
**/
public static String toMd5(String text) {
String result = null;
//首先判断是否为空
if(StringUtils.isEmpty(text)) {
return "";
}
try{
//首先进行实例化和初始化
MessageDigest md = MessageDigest.getInstance("MD5");
//得到一个操作系统默认的字节编码格式的字节数组
byte[] btInput = text.getBytes();
//对得到的字节数组进行处理
md.update(btInput);
//进行哈希计算并返回结果
byte[] btResult = md.digest();
//进行哈希计算后得到的数据的长度
StringBuffer sb = new StringBuffer();
for(byte b : btResult){
int bt = b&0xff;
if(bt < 16) {
sb.append(0);
}
sb.append(Integer.toHexString(bt));
}
result = sb.toString();
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
return result;
}
/**
* 将TinyInt转为Byte
*
* @param tinyInt byte值
* @return Byte
**/
public static Byte intToByte(Integer tinyInt) {
return tinyInt.byteValue();
}
public static String byteToString(Byte bytes) {
return bytes.toString();
}
/**
* 获取平台
*
* @param userAgent 请示Agent
* @return Platform
*/
public static Platform getPlatform(String userAgent) {
if (StringUtils.isEmpty(userAgent)) {
return Platform.UNKNOWN;
}
userAgent = userAgent.toLowerCase();
if (userAgent.indexOf("micromessenger") > 0){
return Platform.WEIXIN_CLIENT;
} else if (userAgent.contains("iphone") || userAgent.contains("ipod") || userAgent.contains("ipad")){
if (userAgent.contains("mozilla")
|| userAgent.contains("mqqbrowser")
|| userAgent.contains("opera")
|| userAgent.contains("ucweb")
|| userAgent.contains("quark")) {
return Platform.IOS_BROWSER;
}
return Platform.IOS_CLIENT;
} else if (userAgent.contains("android")) {
if (userAgent.contains("mozilla")
|| userAgent.contains("mqqbrowser")
|| userAgent.contains("opera")
|| userAgent.contains("ucweb")
|| userAgent.contains("quark")) {
return Platform.ANDROID_BROWSER;
}
return Platform.ANDROID_CLIENT;
} else {
return Platform.PC;
}
}
//ESCAPE编码字符串
public static String escape(String src) {
int i;
char j;
StringBuilder tmp = new StringBuilder();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
//解码ESCAPE字符串
public static String unescape(String src) {
StringBuilder tmp = new StringBuilder();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
public static String hideMobile(String mobile) {
if (StringUtils.isEmpty(mobile)) {
return "";
}
return mobile.replaceAll("(\\d{3})\\d{0,4}(\\d{0,4})", "$1****$2");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy