首页 > 其他分享 >Excel生成随机密码

Excel生成随机密码

时间:2024-03-28 14:11:20浏览次数:17  
标签:Dim arr String Excel Len Rnd 密码 随机

针对生成一个8到12位包含大小写字母、数字、以及特殊字符的随机密码的需求,我们可以采用VBA来实现,以确保每种字符至少包含一次,同时随机生成密码长度。下面是一个更贴近需求的VBA函数示例:

Function GenerateComplexPassword() As String
    Dim passwordLength As Integer
    Dim lowercase As String
    Dim uppercase As String
    Dim numbers As String
    Dim specialChars As String
    Dim allChars As String
    Dim password As String
    Dim i As Integer

    ' 初始化字符集
    lowercase = "abcdefghijklmnopqrstuvwxyz"
    uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    numbers = "0123456789"
    specialChars = "!@#$%^&*"
    allChars = lowercase & uppercase & numbers & specialChars

    ' 随机密码长度8到12位
    passwordLength = Int((12 - 8 + 1) * Rnd + 8)

    ' 确保密码包含至少一个小写字母、一个大写字母、一个数字和一个特殊字符
    password = Mid(lowercase, Int((Len(lowercase) * Rnd) + 1), 1) & _
               Mid(uppercase, Int((Len(uppercase) * Rnd) + 1), 1) & _
               Mid(numbers, Int((Len(numbers) * Rnd) + 1), 1) & _
               Mid(specialChars, Int((Len(specialChars) * Rnd) + 1), 1)

    ' 填充剩余长度
    For i = 5 To passwordLength
        password = password & Mid(allChars, Int((Len(allChars) * Rnd) + 1), 1)
    Next i

    ' 打乱密码以增加随机性
    GenerateComplexPassword = ShuffleString(password)
End Function

' 一个简单的字符串打乱函数
Function ShuffleString(s As String) As String
    Dim arr() As String
    Dim i As Long
    Dim j As Long
    Dim temp As String

    ReDim arr(1 To Len(s))
    For i = 1 To Len(s)
        arr(i) = Mid(s, i, 1)
    Next i

    ' 打乱数组
    For i = 1 To Len(s)
        j = Int((Len(s) - i + 1) * Rnd + i)
        temp = arr(i)
        arr(i) = arr(j)
        arr(j) = temp
    Next i

    ' 重组为字符串
    ShuffleString = Join(arr, "")
End Function

VBA脚本首先定义了一个GenerateComplexPassword函数,用于生成随机密码。它确保了密码至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。然后,它填充剩余的字符以达到随机选择的长度(8到12位之间)。最后,使用ShuffleString函数打乱密码中的字符,以提高密码的随机性和安全性。

Alt + F11打开Excel的VBA编辑器,插入一个模块,并将上面的代码粘贴进去。保存后,你可以在Excel公式中通过调用=GenerateComplexPassword()来生成一个随机的、复杂的密码。

标签:Dim,arr,String,Excel,Len,Rnd,密码,随机
From: https://www.cnblogs.com/fxcoding/p/18101546

相关文章

  • EasyExcel库来读取指定Excel文件中的数据
    FileexcelFile=newFile(path);if(!excelFile.exists()){thrownewException("Thespecifiedexcelfiledoesnotexistatpath:"+path);}//使用EasyExcel读取文件......
  • vue前端根据el-table导出excel
    1.导入xlsx、xlsx-style、file-savernpminstall--savexlsxnpminstall--savexlsx-stylenpminstall--savefile-saver2.防止xlsx-style报错vue.config.js添加chainWebpack(config){config.externals({"./cptable":"varcptable"});//xlsx......
  • vcf文件可以用excel打开吗?四种解决方案
    vcf文件可以用excel打开吗?当然可以。一、VCF文件简介VCF(vCard)文件是一种用于存储联系人信息的文件格式。它通常包含姓名、电话号码、电子邮件地址、地址等详细信息。VCF文件在多种设备和操作系统中广泛使用,特别是在电子邮件客户端和移动通讯应用中。二、VCF文件与Excel......
  • 获取随机数.java
    获取随机数:Java帮我们写好了一个类Random,这个类可以生成一个随机数使用方法:①导包:Random这个类在哪importjava.util.Random;②创建对象:表示我要开始用Random这个类了Randomsc=newRandom();③获取随机数:获取数字intnumber=sc.nextInt(100);例:获取10个8~19之间的随......
  • 使用宝塔面板自建bitwarden(vaultwarden)密码管理器服务器
    参考:bitwarden(vaultwarden)密码管理器自建服务器-腾讯云开发者社区-腾讯云Docker部署Vaultwarden,并使用Nginx反向代理实现Https-Alain'sBlogInstallandSyncAllofYourDevices|Bitwarden 一、准备:域名+ssl+服务器二、步骤1、打开宝塔面板docker管理工具,在应用......
  • 实验一 密码引擎-1-OpenEuler-OpenSSL编译
    安装Ubuntu和OpenEuler虚拟机下载最新的OpenSSL源码(3.2.1版本)用自己的8位学号建立一个文件夹,cd你的学号,用pwd获得绝对路径参考https://www.cnblogs.com/rocedu/p/5087623.html先在Ubuntu中完成OpenSSL编译安装,然后在OpenEuler中重现./config--prefix=..(学号目录......
  • Elasticsearch 8.x以上实现初始化用户密码,elasticsearch-setup-passwords interactive
    Elasticsearch8.x以上,默认自动开启x-pack验证,在首次启动时,会设置密码,当再次执行elasticsearch-setup-passwordsinteractive就会报错,提示使用elasticsearch-reset-passwords,但是用户太多,还是想要能像8.x以下一直敲回车,设置密码。今天偶然Elasticsearch报错,发现一个方法可以使用,......
  • Navicat Premium密码查看,密码解密
    在navicat右上角点击文件,点击导出链接,导出ncx文件,在文件找到password的加密字符 将以下代码复制到https://www.runoob.com/try/runcode.php?filename=HelloWorld&type=java中,执行后,即可解密。importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;import......
  • java笔记_16_EasyExcel表头设计
    导出对象:importcom.alibaba.excel.annotation.ExcelProperty;importcom.fasterxml.jackson.annotation.JsonFormat;importlombok.Data;@DatapublicclassProdEvaluatResultExcelVO{//ExcelProperty设置默认表头(无自定义表头时,直接生成)@ExcelProperty("表......
  • pageoffice6控制在线打开的Excel编辑区域(局部编辑)
    转发:控制Excel编辑区域(局部编辑)#控制Excel编辑区域(局部编辑)本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。在实际项目开发中,以下场景可能会用到Excel局部编辑......