流水号生成规则,时间戳+手机号加密16位:
生成时间戳:Time.java
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Administrator
*/
public class Time {
public static void main(String[] args) {
String res = "2019-12-18 11:08:26";
int s = 1576638506;
System.out.println("时间戳转换为时间:" + stampToDate(s));
System.out.println("时间转换为时间戳:" + dateToStamp(res));
}
/**
* 将时间转换为时间戳
*/
public static String dateToStamp(String s) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String res = "";
if (s != null && (!"".equals(s))) {
try {
res = String.valueOf(sdf.parse(s).getTime() / 1000);
} catch (Exception e) {
System.out.println("传入了null值");
}
} else {
long time = System.currentTimeMillis();
res = String.valueOf(time / 1000);
}
return res;
}
/**
* 将时间戳转换为时间
*/
public static String stampToDate(int time) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String times = format.format(new Date(time * 1000L));
return times;
}
}
md5加密(16/32):Md5.java
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5 加密后的位数一般为两种,16 位与 32 位。16 位实际上是从 32 位字符串中,取中间的第 9 位到第 24 位的部分即:
* .substring(8, 24);
* @author Administrator
*/
public class Md5 {
/**
* 32位
* @param plainText
* @return
*/
public static String md5For32(String plainText) {
byte[] secretBytes = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
secretBytes = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有md5这个算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code;
}
return md5code;
}
/**
* 16位
* @param plainText
* @return
*/
public static String md5For16(String plainText) {
byte[] secretBytes = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
secretBytes = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有md5这个算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code;
}
return md5code.substring(8, 24);
}
public static void main(String[] args) {
System.out.println(md5For16("123"));
}
}