系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 脚本中心 > PowerShell > 详细页面

PowerShell脚本 随机密码生成器(ps随机密码生成器)

时间:2020-01-28来源:系统城作者:电脑系统城

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

全部代码:


 
  1. #本脚本会在 $存盘目录 下生成3个文件(小写加数字密码.txt,大小写加数字密码.txt,小写加数字加特殊符号密码.txt)
  2. #每个文件中含有 $生成密码总个数 个密码。
  3. #这个脚本根据大文件作为随机数种子,加随机数产生密码。找不到大文件将无法产生密码。
  4.  
  5. $生成密码总个数 = 1000
  6. $每个密码位数 = 12
  7. $存盘目录 = 'e:\脚本ps\log_ps\'
  8. $大文件所在盘符 = 'f:\'
  9. [array]$大文件类型 = "*.rmvb","*.mkv","*.mp4","*.avi"
  10.  
  11. $小写加数字密码 = $存盘目录 + '小写加数字密码.txt'
  12. $含大写密码 = $存盘目录 + '大小写加数字密码.txt'
  13. $含特殊符号密码 = $存盘目录 + '小写加数字加特殊符号密码.txt'
  14.  
  15. #$ErrorActionPreference = "SilentlyContinue"
  16. $最大的10个文件 = Get-ChildItem -path $大文件所在盘符 -recurse -force -Include $大文件类型 |Sort-Object length -Descending | select-object -first 10
  17. if ($最大的10个文件.Length -lt 10)
  18. {
  19. Write-Error "这个脚本根据大文件作为随机数种子,加随机数产生密码。找不到大文件将无法产生密码。"
  20. Write-Error "在 $大文件所在盘符 找不到 $大文件类型 文件,或文件总数不够10个"
  21. exit
  22. }
  23.  
  24.  
  25. $密码种子文件 = $最大的10个文件 | Get-Random
  26. Write-Host "这个脚本根据大文件作为随机数种子,加随机数产生密码。找不到大文件将无法产生密码。"
  27. Write-Host $密码种子文件.FullName,$密码种子文件.length
  28.  
  29. mkdir $存盘目录
  30. Write-Host "---生成的密码个数:$生成密码总个数 生成位置:$存盘目录 "
  31.  
  32. $文件流 = new-object system.io.filestream($密码种子文件,"open")
  33. $null = $文件流.seek(0,0)
  34. $reader = new-object System.IO.BinaryReader($文件流)
  35.  
  36.  
  37.  
  38.  
  39. $小写字母 ="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"
  40. #小写字母没有字母 l
  41.  
  42. $数字 = "2","3","4","5","6","7","8","9"
  43. #没有0,1
  44.  
  45. $大写字母 ="A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"
  46.  
  47. $特殊符号 = "~","!","@","#","$","%","^","&","*","(",")"
  48. #大写字母没有字母 I,O
  49.  
  50. $小写加数字 = $小写字母 + $数字
  51. $大小写加数字 = $大写字母 + $小写字母 + $数字
  52. $含特殊符号 = $小写字母 + $数字 + $特殊符号
  53.  
  54.  
  55.  
  56. $小写加数字密码个数 = 0
  57. while ($小写加数字密码个数 -lt $生成密码总个数)
  58. {
  59. $一个密码 = $null
  60. while ($一个密码.length -lt $每个密码位数)
  61. {
  62. $源自文件的随机数 = $reader.Readbyte()
  63. $ps随机数 = 1..50 | Get-Random
  64. $随机数 = $源自文件的随机数 - $ps随机数
  65. if (($随机数 -lt 123) -and ($随机数 -ge 32) )
  66. {
  67. $密码字母 = [char][int]$随机数
  68. if ($小写加数字 -ccontains $密码字母)
  69. {
  70. $一个密码 = $一个密码 + $密码字母
  71. }
  72. }
  73. }
  74. $结果 = $一个密码
  75.  
  76. if ($结果 -match "[0-9]+")
  77. {
  78. #洗牌
  79. $结果 = $结果 | Get-Random -Count $每个密码位数
  80. $结果 >> $小写加数字密码
  81. Write-Host "." -NoNewline -ForegroundColor Yellow
  82. $小写加数字密码个数++
  83. }
  84. }
  85. Write-Host "`n---完成 $生成密码总个数 个【小写加数字】密码创建---"
  86.  
  87. $含大写密码个数 = 0
  88. while ($含大写密码个数 -lt $生成密码总个数)
  89. {
  90. $一个密码 = $null
  91. while ($一个密码.length -lt $每个密码位数)
  92. {
  93. $源自文件的随机数 = $reader.Readbyte()
  94. $ps随机数 = 110..150 | Get-Random
  95. $随机数 = $源自文件的随机数 - $ps随机数
  96. if (($随机数 -lt 123) -and ($随机数 -ge 32) )
  97. {
  98. $密码字母 = [char][int]$随机数
  99. if ($大小写加数字 -ccontains $密码字母)
  100. {
  101. $一个密码 = $一个密码 + $密码字母
  102. }
  103. }
  104. }
  105. $结果 = $一个密码
  106.  
  107. if ($结果 -match "[0-9]+")
  108. {
  109. #洗牌
  110. $结果 = $结果 | Get-Random -Count $每个密码位数
  111. $结果 >> $含大写密码
  112. Write-Host "." -NoNewline -ForegroundColor Yellow
  113. $含大写密码个数++
  114. }
  115. }
  116. Write-Host "`n---完成 $生成密码总个数 个【大写小写加数字】密码创建---"
  117.  
  118.  
  119.  
  120. $含特殊符号密码个数 = 0
  121. while ($含特殊符号密码个数 -lt $生成密码总个数)
  122. {
  123. $一个密码 = $null
  124. while ($一个密码.length -lt $每个密码位数)
  125. {
  126. $源自文件的随机数 = $reader.Readbyte()
  127. $ps随机数 = 1..50 | Get-Random
  128. $随机数 = $源自文件的随机数 - $ps随机数
  129. if (($随机数 -lt 123) -and ($随机数 -ge 32) )
  130. {
  131. $密码字母 = [char][int]$随机数
  132. if ($含特殊符号 -ccontains $密码字母)
  133. {
  134. $一个密码 = $一个密码 + $密码字母
  135. }
  136. }
  137. }
  138. $结果 = $一个密码
  139.  
  140. if ($结果 -match "[0-9]+")
  141. {
  142. #洗牌
  143. $结果 = $结果 | Get-Random -Count $每个密码位数
  144. $结果 >> $含特殊符号密码
  145. Write-Host "." -NoNewline -ForegroundColor Yellow
  146. $含特殊符号密码个数++
  147. }
  148. }
  149. Write-Host "`n---完成 $生成密码总个数 个【小写加数字加特殊符号】密码创建---"
  150.  
  151. #Write-Host `n,$文件流.Position
  152. $文件流.Dispose()
  153.  
  154. 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份,放在不同地方,每半年更新。

本人脚本新作【灰主牛 隐私记事本】 正在创作中,敬请期待。。。

分享到:

相关信息

  • Powershell 脚本数字签名实现方法

    脚本很容易被冒名顶替或者更改,因为它们是由纯文本构成的。数字签名为脚本提供了更高的安全性,因为它能确定脚本和脚本的编辑者的唯一性,并且不能被更改。作为脚本的发布者,你能确定你的脚本没有被恶意篡改。即使专家也无...

    2020-01-28

  • PowerShell 语音计算器实现代码

    带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币的相关资料...

    2020-01-28

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载