1、第一个
package com.tigeriot.mqtt.util;
import java.util.ArrayList;
import java.util.StringTokenizer;
import com.alibaba.fastjson.JSON;
import org.springframework.util.StringUtils;
public class StringUtil {
public static String captureName(String str) {
char[] cs = str.toCharArray();
return String.valueOf(cs);
public static boolean isEquString(String str_source, String str_target) {
if (str_target.equals(str_source)) {
public static String getNameDepart(String realname) {
char[] r = realname.toCharArray();
realname1 = realname.replaceFirst(realname.substring(1), "*");
realname1 = realname.replaceFirst(realname.substring(1, r.length - 1), "*");
public static String decodeby10(String str) {
StringBuffer out = new StringBuffer();
if (str == null || ("".equals(str)))
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if ((chars[i] >= 19968 && chars[i] <= 40869)
|| (chars[i] >= 11904 && chars[i] <= 42191)
|| (chars[i] >= 63744 && chars[i] <= 64255)
|| (chars[i] >= 65072 && chars[i] <= 65103)
|| (chars[i] >= 65280 && chars[i] <= 65519)
|| (chars[i] >= 32 && chars[i] <= 126)
|| (chars[i] >= 12289 && chars[i] <= 12319)
String result = out.toString().trim();
result = result.replaceAll("\\?", "").replaceAll("\\*", "").replaceAll("<|>", "").replaceAll("\\|", "")
public static boolean isHexStr(String str) {
for (i = 0; i < str.length(); i++) {
if (!(((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'F')) || (c >= 'a') && (c <= 'f'))) {
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
for (int i = 0; i < src.length; i++) {
String hv = Integer.toHexString(v);
stringBuilder.append(hv);
return stringBuilder.toString();
public static byte[] HexStringToHexBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
if (!isHexStr(hexString)) {
throw new Exception( "不合法的十六进制!");
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
System.out.println(e.getMessage());
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
public static String getTel_PartContent(String tel) {
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
public static List getTokenizerList(String strValue, String delim) {
List myList = new ArrayList();
StringTokenizer stChat = new StringTokenizer(strValue, delim);
int iLength = stChat.countTokens();
for (int i = 0; i < iLength; i++) {
String strTemp = stChat.nextToken();
public static void printHexString(byte[] b) {
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
System.out.print(hex.toUpperCase() + "");
public static String getHexString(byte b) {
StringBuffer hex_str = new StringBuffer();
String hex = Integer.toHexString(b & 0xFF);
hex_str.append(hex.toLowerCase());
return hex_str.toString();
public static String getHexString(byte[] b) {
StringBuffer hex_str = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
hex_str.append(hex.toLowerCase());
return hex_str.toString();
public static String[] getHexStringArr(String hexString) throws Exception {
if (hexString == null || hexString.equals("")) {
if (!isHexStr(hexString)) {
throw new Exception("不合法的十六进制!");
String[] strList = new String[hexString.length()/2];
String [] temp = hexString.split("");
for (int i = 0; i < temp.length; i+=2) {
strList[index] = temp[i] + temp[i+1];
throw new Exception( "不合法的16进制!");
public static String subStr(String str, int n) {
return str.substring(str.length() - n, str.length());
public static String StringTim(String str) {
return str.replaceAll("\\s*", "").trim();
public static String getNumStr(String str) {
if (str != null && !"".equals(str)) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
public static boolean isNumStr(String str) {
if (str != null && !"".equals(str)) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
public static String strTo16(String s) {
for (int i = 0; i < s.length(); i++) {
int ch = (int) s.charAt(i);
String s4 = Integer.toHexString(ch);
public static String getHex_4formLong(long i) {
String hex4 = "00000000" + Long.toHexString(i);
int length = hex4.length();
return hex4.substring(length - 8, length);
public static String getHex_4formInt(int i) {
String hex4 = "00000000" + Integer.toHexString(i);
int length = hex4.length();
return hex4.substring(length - 8, length);
public static String getHex_2formShort(short i) {
String hex4 = "00000000" + Integer.toHexString(i);
int length = hex4.length();
return hex4.substring(length - 4, length);
public static String getHex_1formShort(short i) {
String hex4 = "00000000" + Integer.toHexString(i);
int length = hex4.length();
return hex4.substring(length - 2, length);
public static String getHex_1formLong(byte i) {
String hex4 = "00000000" + Integer.toHexString(i);
int length = hex4.length();
return hex4.substring(length - 2, length);
public static String hexStr_to_Str(String hexStr) {
String str = "0123456789ABCDEF";
char[] hexs = hexStr.toCharArray();
byte[] bytes = new byte[hexStr.length() / 2];
for (int i = 0; i < bytes.length; i++) {
n = str.indexOf(hexs[2 * i]) * 16;
n += str.indexOf(hexs[2 * i + 1]);
bytes[i] = (byte) (n & 0xff);
return new String(bytes);
public static boolean isURL(String str) {
String regex = "^((https|http|ftp|rtsp|mms|tcp)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?"
+ "(([0-9]{1,3}\\.){3}[0-9]{1,3}"
+ "([0-9a-z_!~*'()-]+\\.)*"
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\."
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
return str.matches(regex);
public static List getStringListByJsonStr(String bindUserIds_req) {
List result = new ArrayList();
if (bindUserIds_req != null) {
result = JSON.parseArray(bindUserIds_req, String.class);
public static void main(String[] args) {
String str = "tcp://192.168.1.155";
System.out.println(isURL(str));
public static boolean isNullOrEmpty(String s) {
return s == null || s.isEmpty();
public static boolean isNotNullAndNotEmpty(String s) {
return !isNullOrEmpty(s);

2、第二个
package com.tigeriot.mqtt.util;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.tigeriot.mqtt.common.CodeConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.security.SecureRandom;
import java.util.ArrayList;
public class StringHexUtil {
public static byte[] hexToByte(String hexStr){
if(StringUtils.isEmpty(hexStr) ||!isHexStr(hexStr)){
return stringHexToBytes(hexStr);
public static String byteToHex(byte[] bytes){
StringBuilder hexString = new StringBuilder();
String hex = Integer.toHexString(b & 0xFF);
return hexString.toString();
public static boolean isHexStr(String hexStr){
String []s = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","a","b","c","d","e","f"};
List list = Arrays.asList(s);
char [] chars = hexStr.toCharArray();
if(!list.contains(String.valueOf(c))){
public static byte[] stringHexToBytes(String str){
char[] hexChars = str.toCharArray();
byte[] bytes = new byte[hexChars.length / 2];
for (int i = 0; i < bytes.length; i++) {
int highNibble = Character.digit(hexChars[i * 2], 16);
int lowNibble = Character.digit(hexChars[i * 2 + 1], 16);
bytes[i] = (byte) ((highNibble << 4) | lowNibble);
public static boolean isNotBlank(String str) {
return str != null && !str.isEmpty() && !str.trim().isEmpty();
public static RV validateClientID(String clientID){
if (!StringHexUtil.isNotBlank(clientID)){
log.info("您的clientID不能为空格,空串,null:"+clientID);
return RV.error(CodeConst.FAIL,"您的ClientID为空或空串",null);
} else if (clientID.length()!=15) {
log.info("您的clientID长度不为15:"+clientID);
return RV.error(CodeConst.FAIL,"您的clientID长度不为15",null);
} else if (!isNumeric(clientID)) {
log.info("您的clientID不是数字:"+clientID);
return RV.error(CodeConst.FAIL,"您的clientID不是数字",null);
return RV.ok(CodeConst.SUCCESS,"验证通过",null);
public static String generateRandomNumber(int length) {
Random random = new Random();
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
int digit = random.nextInt(10);
private static final String LOWERCASE_CHARACTERS = "abcdefghijklmnopqrstuvwxyz";
private static final String UPPERCASE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String DIGITS = "0123456789";
private static final String ALL_CHARACTERS = LOWERCASE_CHARACTERS + UPPERCASE_CHARACTERS + DIGITS;
private static final SecureRandom RANDOM = new SecureRandom();
public static String generateRandomString(int length) {
StringBuilder randomString = new StringBuilder(length);
randomString.append(LOWERCASE_CHARACTERS.charAt(RANDOM.nextInt(LOWERCASE_CHARACTERS.length())));
randomString.append(UPPERCASE_CHARACTERS.charAt(RANDOM.nextInt(UPPERCASE_CHARACTERS.length())));
randomString.append(DIGITS.charAt(RANDOM.nextInt(DIGITS.length())));
for (int i = 3; i < length; i++) {
randomString.append(ALL_CHARACTERS.charAt(RANDOM.nextInt(ALL_CHARACTERS.length())));
return shuffleString(randomString.toString());
private static String shuffleString(String input) {
char[] characters = input.toCharArray();
for (int i = characters.length - 1; i > 0; i--) {
int randomIndex = RANDOM.nextInt(i + 1);
char temp = characters[i];
characters[i] = characters[randomIndex];
characters[randomIndex] = temp;
return new String(characters);
public static boolean isNumeric(String str) {
if (str == null || str.length() == 0) {
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
public static String strToSha256(String str){
return DigestUtil.sha256Hex(str);
public static void main(String[] args) {
System.out.println(generateRandomString(20));

需要导入依赖
<groupId>cn.hutoolgroupId>
<artifactId>hutool-allartifactId>