这篇文章主要介绍了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份,放在不同地方,每半年更新。

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

    无相关信息
最新资讯
后直播时代网红求生之道:打赏不够,广告、带货来凑

后直播时代网红求生之

屏幕这端,是独自面对麦克风的“艺人”;屏幕那一端,是4亿
还把苹果发布会当“科技春晚”看,你就输了

还把苹果发布会当“科

今年苹果秋季发布会有个非常主流的评论方向,叫“贵成为
小程序未必是支付宝的理想生态

小程序未必是支付宝的

支付宝的困扰在于如果小程序的目标是骚扰并牵制微信,那
人民不需要这样的iPhone

人民不需要这样的iPho

你大爷还是你大爷。
外媒评iPhone汇总:继续价格抬高战略 单价更贵更赚钱

外媒评iPhone汇总:继

手机是苹果的利润之源,虽然设计没有太大变化,不过市场普
在四川深山里做自媒体:田间地头产10万+ 月收入过万

在四川深山里做自媒体

这是农村自媒体的黄金时期,是农村人翻身的另一个机会,也
最新文章
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 命令行或脚