使用特殊字符在Groovy中创建强密码

使用特殊字符在Groovy中创建强密码,groovy,Groovy,我想在groovy中创建一个强大的密码,包括小写字母、大写字母、数字和特殊字符 以下是所需的特殊字符: ~`.@$%^&*()-_=+[{]}\|;:'“,/ 我正在使用下面的代码,但我也希望在我的密码中至少有一个特殊字符 def pass_length = 15; def pool = ['a'..'z','A'..'Z',0..9,'_'].flatten(); Random rand = new Random(System.currentTimeMillis());

我想在groovy中创建一个强大的密码,包括小写字母、大写字母、数字和特殊字符

以下是所需的特殊字符:

~`.@$%^&*()-_=+[{]}\|;:'“,/

我正在使用下面的代码,但我也希望在我的密码中至少有一个特殊字符

 def pass_length = 15;

    def pool = ['a'..'z','A'..'Z',0..9,'_'].flatten();
    Random rand = new Random(System.currentTimeMillis());

    def passChars = (0..pass_length - 1).collect { pool[rand.nextInt(pool.size())] };
    def PASSWORD = passChars.join();

目前,它只创建字母数字密码。我可以对代码进行任何快速更改吗?请帮助我,因为我刚刚使用groovy。

您可以选择一个随机特殊字符,并将其放置在生成的密码中的随机位置。这将确保密码中至少有一个特殊字符

 def pass_length = 15;

    def pool = ['a'..'z','A'..'Z',0..9,'_'].flatten();
    Random rand = new Random(System.currentTimeMillis());

    def passChars = (0..pass_length - 1).collect { pool[rand.nextInt(pool.size())] };
    def PASSWORD = passChars.join();
还有,为什么不把特殊字符也添加到字典中呢?这样,一个特殊字符就更有可能出现在最后的字符串中

def pass_length = 15;

def special = ['~' ,'`', ...] // you get the idea...
def pool = ['a'..'z','A'..'Z',0..9,'_'].flatten().plus(special);
Random rand = new Random(System.currentTimeMillis());

def passChars = (0..pass_length - 1).collect { pool[rand.nextInt(pool.size)] };
def specialChar = special[rand.nextInt(special.size)]
passChars[rand.nextInt(passChars.size)] = specialChar
def PASSWORD = passChars.join();

下面的代码使用指定的基本字母表和“特殊字符字母表”中特定数量的特殊字符生成指定长度的随机密码:

~> groovy solution.groovy 
06HT.Q5J4OOvN}S
U1h28bRcu{o)0l2
VxhMSD@6H7Qt(vH
9Bt!G2v.LT0u4ES
r1=RyWJO6R}x2Gl
sOBimChqOY3P1#x
5A]V4iiUQXkZdXv
R1iwlkZT-Ou;BrO
HbNAF>W4NRFSYRF
evuLb~ma%fzcSuA

~>