?
目录
java.util.Random.RandomStringUtils
常用方法:
可以使用该工具类生成唯一密钥
美国高防vps
生成唯一hash值的其他方法:使用md5加密
java.util.Random.RandomStringUtils
有如下方法:
?
常用方法:
/**
?* count 指定创建一个随机串的长度
?* letters true表示生成的字符串可以包括字母字符
?* numbers true表示生成的字符串可以包含数字字符
?*/
public static String random(int count, boolean letters, boolean numbers)
/**
?* 使用该方法,输出结果例如:??赇??倇?????裳豎??
?*/
public static String random(int count) {
? ? return random(count, false, false);
}
/**
?* chars 表示生成的随机串的内容是从传入的chars中选取,chars不可以传入空
?*/
public static String random(int count, String chars)
randomAlphabetic
/**
* 产生一个长度为指定的随机字符串的字符数,字符将从拉丁字母(a-z、A-Z的选择)。
* count:创建随机字符串的长度
*/
?public static String randomAlphanumeric(int count)
/**
* 创建一个随机字符串,其长度介于minLengthInclusive(包含)和maxLengthExclusive(不包含)之间,字符将从拉丁字母(a-z、A-Z的选择)。
* minLengthInclusive :要生成的字符串的包含最小长度
* maxLengthExclusive :要生成的字符串的包含最大长度
*/
public static String randomAlphanumeric(int minLengthInclusive, int maxLengthExclusive)
randomNumeric
?
?
可以使用该工具类生成唯一密钥
比如: String key = RandomStringUtils.random(5, String.valueOf(System.currentTimeMillis()));?
但是随机并不意味着唯一。您可以尝试使用UUID生成唯一密钥。
所以在使用RandomStringUtils做到这一点,但是在尝试插入ID之前,还必须对其进行判断它已经存在吗?。
?
生成唯一hash值的其他方法:使用md5加密
比如:DigestUtils.md5Hex(String.valueOf(System.currentTimeMillis()))
?MD5消息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。算法不可逆。
1.使用Spring的DigestUtils
String str = DigestUtils.md5DigestAsHex(TARGET.getBytes());?
2.使用三方jar包commons-codec进行加密,记得导入jar包
1)md5加密(不可逆)
String md5Str = DigestUtils.md5Hex(TARGET));
2)SHA1加密(不可逆)
String SHA1Str = DigestUtils.sha1Hex(TARGET);
3)base64加密和解密(可逆)
String base64Str = Base64.encodeBase64String(TARGET.getBytes());
该jar包中也提供解密函数:
String base64DecodeStr = Arrays.toString(Base64.decodeBase64(base64Str));
// 这里decodeBase64(final String base64String)方法返回值是byte[]?
// 注意java byte数组里存的是ascii码
// base64加密和解密示例:String base64Str = Base64.encodeBase64String(“fsdjaks”.getBytes());byte[] decodeBytes = Base64.decodeBase64(base64Str)String decodeStr = Arrays.toString(decodeBytes);输出结果:base64Str值为ZnNkamFrcw== decodeStr结果为[102, 115, 100, 106, 97, 107, 115] // 如果要将decode结果输出为正常字符串String normalDecodeStr=new String(decodeBytes,”ascii”); //第二个参数指定编码方式输出结果:normalDecodeStr的值为fsdjaks
?
86117396