java生成随机字符串,林海的CSDN博文,RandomStringGenerator,长度可以指定,字符约束范围可选,可用于生成随机密码,密约等场景,支持字符范围配置

          Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持在可选字符范围(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)内生成随机字符串,即在选择的字符范围内去实现随机字符串生成,支持特殊字符生成,特殊到可以支持回车符,换行符,制表符,转义符,空格等。
      
          具备洗牌算法功能,即在生成随机字符串之前,可以先将源字符范围进行随机洗牌,大大增强了最终产生的字符串的随机性。


目录

1. 源码展示

2. 调用方法

3. 生成随机字符串的效果

4. 源码下载      


1. 源码展示

/**
 * 随机字符串生成器
 * 

ClassName : RandomStringGenerator

* @author lilinhai 2019年3月10日 下午12:13:15 * @version 1.0 */ public abstract class RandomStringGenerator { /** * 随机密钥生成器 *

Title : generate lilinhai 2019年3月10日 下午12:42:33

* @param length * @return * String */ public static final String generate(int length) { return generate(length, CharacterRange.ALL.chars); } /** * 随机密钥生成器 *

Title : generate lilinhai 2019年3月10日 下午12:42:33

* @param length * @return * String */ public static final String generate(int length, CharacterRange characterRange) { return generate(length, characterRange.chars); } /** * 随机密钥生成器 *

Title : generate lilinhai 2019年3月10日 下午12:42:33

* @param length * @return * String */ private static final String generate(int length, char[] chars) { Random random = new Random(); // 洗牌 shuffleTheCards(random, chars); StringBuilder keyBuilder = new StringBuilder(); for (int i = 0; i < length; i++) { char c = chars[random.nextInt(chars.length)]; if (c == '\n') { keyBuilder.append("\\n"); } else if (c == '\t') { keyBuilder.append("\\t"); } else if (c == '\r') { keyBuilder.append("\\r"); } else if (c == '\"') { keyBuilder.append("\\\""); } else if (c == '\\') { keyBuilder.append("\\\\"); } else { keyBuilder.append(c); } } return keyBuilder.toString(); } /** * 洗牌 *

Title : shuffleTheCards lilinhai 2019年3月10日 下午12:37:09

* void */ private static void shuffleTheCards(Random random, char[] chars) { for (int i = 0; i < chars.length; i++) { //生成随机数 int j = random.nextInt(chars.length); //交换 char temp = chars[i]; chars[i] = chars[j]; chars[j] = temp; } } }

2. 调用方法

    调用方法十分简单,优雅,话不多说,直接上代码和效果:

import pers.linhai.nature.encryptiontool.RandomStringGenerator;
import pers.linhai.nature.encryptiontool.RandomStringGenerator.CharacterRange;

/**
 * 

Description :

TODO(这里用一句话描述这个类的作用)

*

ClassName : RandomKeyGeneratorTest

* @author lilinhai 2019年3月10日 下午1:01:23 * @version 1.0 */ public class RandomKeyGeneratorTest { public static void main(String[] args) { // 生成32位长度随机字符串,不传CharacterRange,表示在所有单字节字符类别中随机选择。 System.out.println(RandomStringGenerator.generate(32)); // 生成32位长度随机密钥,指定单字节字符范围为所有,效果同上 System.out.println(RandomStringGenerator.generate(32, CharacterRange.ALL)); // 生成6位数密码,指定单字节字符范围为纯数字 System.out.println(RandomStringGenerator.generate(6, CharacterRange.NUMBER_ONLY)); // 生成16位长度密钥,指定单字节字符范围为纯数字+大小写字符 System.out.println(RandomStringGenerator.generate(16, CharacterRange.NUMBER_AND_LETTER)); } }

3. 生成随机字符串的效果

    连续执行上面四句代码五遍,看看效果是怎样的呢 :


第一次:
FX|pvDGli+*\tlxifvQR+]\nPT_3'OA\rLc
QSZ\rkOK`XGIv;,TnV-;kX5m5!wM ?|#C
698729
7H3mXGSM71kMtevH

第二次:
= D6@t^Ml|9t70VO\nJH?:a\t|:[MWUmsW
X=CLm- WMZyk'iJ;W2o%_ny0P6ew{E9s
254159
zn5ggotW9uyclDb3

第三次:
rfzazRD+rq)l\tQN&X#kX0AR'@Y2(M _w
|w\\\r\"}SX)'.R&e|\rlhiGCi,zw3O5{S9\n
874640
YtNgQBT7mT95kaUF

第四次:
/@SZip5Q'nDdY3*#Rg\\`*Q+TAZ6B\r|Rt
MW^Jco@^jidP:8`BT$g\\d54: Rr[&BOl
318902
zSnuRldXBAcMEbbI

第五次:
.,3q:@!pB*yck.]'5840h1(}^r.b/HXL
Poe0QN@\"$cl4z%ukSxVVkm9*sYzRsdB3
595826
BSr7s1WMFvheZPa1

4. 源码下载      

      怎么样?效果不错吧,可以看出生成字符串十分具有随机性,以上是部分源码,轻量级完整源码请点击 “ RandomStringGenerator ” 进行下载,谢谢支持原创,祝生活愉快,工作开心,事事顺利~

 

 

 

你可能感兴趣的:(Java,密钥,算法,安全算法,Java专栏)