在项目开发工作中,免不了需要和其他系统对接,为了安全性,提供方总会分配给我们一个apiKey和apiSecret用来鉴权,一般都是数字和大小写字母的混合,最近在设计项目中的支付网关时,也用到了这个东西,不过这次不再是别人给我了,而是我设计给需要对接网关的系统。
顺手将我用到的代码分享给大家,非常简陋,但是基本的功能还是可以满足的。
/**
* 生成指定长度的随机密钥
* @param length 长度
* @return 密钥字符串
*/
public static String uniqueId(int length) {
// 字符源,可以根据需要删减
String source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuilder builder = new StringBuilder();
String str;
for (int i = 0; i < length; i++) {
// 循环随机获得当次字符,并移走选出的字符
// 也可以直接使用charAt随机选取字符
str = String.valueOf(source.charAt((int) Math.floor(Math.random() * source.length())));
builder.append(str);
source = source.replaceAll(str, "");
}
return builder.toString();
}
for循环10次,打印效果图:
生成指定长度的随机数的方法,也可以使用这个方法,将source中的字符串全部替换成数字即可!
随机数生成有N多种方法,但是大体上的思路都是差不多的,没有直接使用Random.nextInt(n)这种方式,因为这种方式的局限性过大,n不可以做到无限大,而用字符串拼接的方式,则可以越过这个限制,还可以保证随机的空间更大。
评论