这篇文章主要介绍了PowerShell脚本 随机密码生成器,需要的朋友可以参考下

脚本作用:产生随机密码。每密码字符个数,密码数量,存盘位置等可以自定义。
脚本用法:
脚本采用了硬编码,所以你需要打开脚本,修改如下变量:
$生成密码总个数 = 1000
$每个密码位数 = 12
$存盘目录 = 'e:\脚本ps\log_ps\'
$大文件所在盘符 = 'f:\'
并保存,然后运行脚本,脚本运行的较慢,可以缩小powershell窗口,n分钟后去收取生成的密码
文件,,。
提示:打入盘符+路径+s+<tab>键,脚本名自动补全。

全部代码:

#本脚本会在 $存盘目录 下生成3个文件(小写加数字密码.txt,大小写加数字密码.txt,小写加数字加特殊符号密码.txt)
#每个文件中含有 $生成密码总个数 个密码。
#这个脚本根据大文件作为随机数种子,加随机数产生密码。找不到大文件将无法产生密码。

$生成密码总个数 = 1000
$每个密码位数 = 12 
$存盘目录 = 'e:\脚本ps\log_ps\'
$大文件所在盘符 = 'f:\'
[array]$大文件类型 = "*.rmvb","*.mkv","*.mp4","*.avi"

$小写加数字密码 = $存盘目录 + '小写加数字密码.txt'
$含大写密码 = $存盘目录 + '大小写加数字密码.txt'
$含特殊符号密码 = $存盘目录 + '小写加数字加特殊符号密码.txt'

#$ErrorActionPreference = "SilentlyContinue"
$最大的10个文件 = Get-ChildItem -path $大文件所在盘符 -recurse -force -Include $大文件类型 | Sort-Object length -Descending | select-object -first 10
if ($最大的10个文件.Length -lt 10)
{
	Write-Error "这个脚本根据大文件作为随机数种子,加随机数产生密码。找不到大文件将无法产生密码。"
	Write-Error "在 $大文件所在盘符 找不到 $大文件类型 文件,或文件总数不够10个"
	exit
}


$密码种子文件 = $最大的10个文件 | Get-Random
Write-Host "这个脚本根据大文件作为随机数种子,加随机数产生密码。找不到大文件将无法产生密码。"
Write-Host $密码种子文件.FullName,$密码种子文件.length

mkdir  $存盘目录
Write-Host "---生成的密码个数:$生成密码总个数 生成位置:$存盘目录 "

$文件流 = new-object system.io.filestream($密码种子文件,"open")
$null = $文件流.seek(0,0)
$reader = new-object System.IO.BinaryReader($文件流)




$小写字母 = "a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","v","w","x","y","z" 
#小写字母没有字母 l

$数字 = "2","3","4","5","6","7","8","9" 
#没有0,1

$大写字母 = "A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z" 

$特殊符号 = "~","!","@","#","$","%","^","&","*","(",")"
#大写字母没有字母 I,O

$小写加数字 = $小写字母 + $数字
$大小写加数字 = $大写字母 + $小写字母 + $数字
$含特殊符号 = $小写字母 + $数字 + $特殊符号



$小写加数字密码个数 = 0
while ($小写加数字密码个数 -lt $生成密码总个数)
{
	$一个密码 = $null
	while ($一个密码.length -lt $每个密码位数)
	{
		$源自文件的随机数 = $reader.Readbyte()
		$ps随机数 = 1..50 | Get-Random
		$随机数 = $源自文件的随机数 - $ps随机数
		if (($随机数 -lt 123) -and ($随机数 -ge 32) )
		{
			$密码字母 = [char][int]$随机数 
			if ($小写加数字 -ccontains $密码字母)
			{
				$一个密码 = $一个密码 + $密码字母
			}
		}
	}
	$结果 = $一个密码
	
	if ($结果 -match "[0-9]+")
	{
		#洗牌
		$结果 = $结果 | Get-Random -Count  $每个密码位数
		$结果 >> $小写加数字密码
	  Write-Host "."  -NoNewline -ForegroundColor Yellow
		$小写加数字密码个数++
	}
}
Write-Host "`n---完成 $生成密码总个数 个密码创建---"

$含大写密码个数 = 0
while ($含大写密码个数 -lt $生成密码总个数)
{
	$一个密码 = $null
	while ($一个密码.length -lt $每个密码位数)
	{
		$源自文件的随机数 = $reader.Readbyte()
		$ps随机数 = 110..150 | Get-Random
		$随机数 = $源自文件的随机数 - $ps随机数
		if (($随机数 -lt 123) -and ($随机数 -ge 32) )
		{
			$密码字母 = [char][int]$随机数 
			if ($大小写加数字 -ccontains $密码字母)
			{
				$一个密码 = $一个密码 + $密码字母
			}
		}
	}
	$结果 = $一个密码
	
	if ($结果 -match "[0-9]+")
	{
		#洗牌
		$结果 = $结果 | Get-Random -Count  $每个密码位数
		$结果 >> $含大写密码
	  Write-Host "."  -NoNewline -ForegroundColor Yellow
		$含大写密码个数++
	}
}
Write-Host "`n---完成 $生成密码总个数 个密码创建---"



$含特殊符号密码个数 = 0
while ($含特殊符号密码个数 -lt $生成密码总个数)
{
	$一个密码 = $null
	while ($一个密码.length -lt $每个密码位数)
	{
		$源自文件的随机数 = $reader.Readbyte()
		$ps随机数 = 1..50 | Get-Random
		$随机数 = $源自文件的随机数 - $ps随机数
		if (($随机数 -lt 123) -and ($随机数 -ge 32) )
		{
			$密码字母 = [char][int]$随机数 
			if ($含特殊符号 -ccontains $密码字母)
			{
				$一个密码 = $一个密码 + $密码字母
			}
		}
	}
	$结果 = $一个密码
	
	if ($结果 -match "[0-9]+")
	{
		#洗牌
		$结果 = $结果 | Get-Random -Count  $每个密码位数
		$结果 >> $含特殊符号密码
	  Write-Host "."  -NoNewline -ForegroundColor Yellow
		$含特殊符号密码个数++
	}
}
Write-Host "`n---完成 $生成密码总个数 个密码创建---"

#Write-Host `n,$文件流.Position
$文件流.Dispose()

Write-Host "`n---完成3种密码,每种: $生成密码总个数 个密码创建---`n别告诉我你缺密码!`n勤修改密码!" 

打包下载:getpwd_jb51.rar

不求最快,但求真随机。

伪随机数:
随机密码其实就是随机数的组合而已,.net的随机数生成很快很好,但也是伪随机数。python的随机数功能
也很快很好,但也只是伪随机数而已。生成的都是伪随机数。

真随机数:
没法生成真随机数,只能真随机数。

本脚本之妙:
我写了好几个版本的随机密码生成,开始都是用法。后来我找到了的方法,我简直忍不住要赞美我啊,呵呵。

可以自定义随机字符:

比如:本脚本生成器生成的随机数中,默认没有0,1 , i, l,o这些容易混淆的字母。

开放源码,无后门。

脚本缺点:比较慢。

脚本首先会用dir你的。这一步比较慢,无权限会报错的信息我也没关闭,目的是直观。
找出定义的10个最大的文件,这些文件默认是 "*.rmvb","*.mkv","*.mp4","*.avi"
没错,就是!
随机选其中一个文件,按照一定规则取数,然后组合成固定长度的密码,然后再随机打乱顺序,
然后根据是否有数字,特殊符号,抛弃不符合的随机数。

本脚本另一个妙的地方是:(为了随机故意而为的算法)

即便你锁定(固定)输入源,即大电影文件,
只要文档内,字节内容随机,产生的密码就随机。即2次运行脚本,将产生2个同名文档(当然你要把前面的改名),对比之,发现生成的每个随机数都不同。
如果文档内,字节内容固定,如都是00,255之类,则不会产生密码。

建议5年内更换一次有可能泄密的帐号。如果实在不能换帐号,必须5年内登录(使用)过1次。
超5年不换账号,不登陆的银行卡的钱,都有可能没了。连国家过个10年8年都更改钱的样式。
powershell 传教士 原创文章 2016-02-06 允许转载,但必须保留名字和出处,否则追究法律责任

建议每年更换密码,或者更短的时间更换密码。密码必须复杂,不同帐号的密码绝不相同。

复杂的密码记在电脑上,然后加密。复制3份,放在不同地方,每半年更新。

本人脚本新作 正在创作中,敬请期待。。。

    无相关信息
最新资讯
蔡文胜真的看好美图吗?

蔡文胜真的看好美图吗

仅凭蔡文胜这样的增持方式是不可能长久支撑美图股价的
中兴遭遇美国精确打击 缺芯的中国科技产业如何还击

中兴遭遇美国精确打击

中兴的主要产品是电信系统设备,其中最主要的就是无线基
让机器像人类一样多模态交互,会是物联网的胜负手吗?

让机器像人类一样多模

“AI of Things”在等待的,可能不仅是语音交互,而是耳目
第四季度苹果占全球手机利润86% iPhone X独占35%

第四季度苹果占全球手

Counterpoint数据显示,去年第四季度,全球手机市场的整体
别看软乎乎的!它们都是受宠的不正经机器人

别看软乎乎的!它们都是

甩开钢筋铁骨,机器人也开始玩软萌了。
聂卫平VS章文嵩是关公战秦琼? “等一等”算法才是大问题

聂卫平VS章文嵩是关公

聂卫平与章文嵩这场隔空论战,颇有一些“关公战秦琼”的
最新文章
PowerShell使用match操作符来筛选数组

PowerShell使用match

本文介绍PowerShell中使用match操作符,配合正则表达式
PowerShell 语音计算器实现代码

PowerShell 语音计算

带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持
通过DNS TXT记录执行powershell

通过DNS TXT记录执行p

这篇文章主要介绍了通过DNS TXT记录执行powershell的
如何防范PowerShell代码注入漏洞绕过受限语言模式

如何防范PowerShell代

这篇文章主要介绍了如何防范PowerShell代码注入漏洞绕
PowerShell管道入门必看篇(管道例子大全)

PowerShell管道入门必

下面小编就为大家带来一篇PowerShell管道入门必看篇(
使用 powershell 创建虚拟机

使用 powershell 创建

Azure PowerShell 模块用于从 PowerShell 命令行或脚