首页 > 其他分享 >一个根据字母,数字和符号组合生成指定长度密码的简单方法

一个根据字母,数字和符号组合生成指定长度密码的简单方法

时间:2023-06-09 19:14:55浏览次数:46  
标签:符号 int 字母 长度 char 密码 pwd updatePwdAction new

  前言:网上没有太好的直接可用的方法,于是自己写了一个,下面的方法可以根据字母,数字和符号组合生成指定长度密码,策略和长度可控,详细代码如下:

 

/// <summary>
/// 生成密码
/// </summary>
/// <param name="zmLength">小写字母长度</param>
/// <param name="upzmLength">大写字母长度</param>
/// <param name="szLength">数字长度</param>
/// <param name="zfLength">字符长度</param>
/// <returns></returns>
public static string BuildNewPwd(int zmLength, int upzmLength, int szLength, int zfLength)
{
    char[] zmArray = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
    char[] upzmArray = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
    char[] szArray = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    char[] zfArray = new char[] { '%', '_', '.' };

    Random random = new Random();
    string pwd = "";

    Action<int, char[]> updatePwdAction = (insertCount, dataArray) =>
    {
        for (int i = 0; i < insertCount; i++)
        {
            int dataIndex = random.Next(0, dataArray.Length);
            char data = dataArray[dataIndex];
            int insertIndex = random.Next(0, (pwd.Length == 0 ? 1 : pwd.Length));
            pwd = pwd.Insert(insertIndex, data.ToString());
        }
    };

    updatePwdAction(zmLength, zmArray);
    updatePwdAction(upzmLength, upzmArray);
    updatePwdAction(szLength, szArray);
    updatePwdAction(zfLength, zfArray);

    return pwd;
}

 

标签:符号,int,字母,长度,char,密码,pwd,updatePwdAction,new
From: https://www.cnblogs.com/lxhbky/p/17470045.html

相关文章

  • Docker创建无密码ssh容器
    需求希望创建一个container进行调试,使用ssh登陆无需密码。实现Dockerfile如下FROMubuntu:20.04RUNpasswd-droot&&apt-getupdate&&\DEBIAN_FRONTEND=noninteractiveapt-getinstall-yq\s6ssh&&mkdir/run/sshd&&mkdir-p/etc/s6/ss......
  • 密码学(4):常见对称算法
    叨两句密码系列文章,是对接第三方接口时接触到加解密,但是知识体系较乱。希望能整理常见证书、密钥、加解密方式这方面知识,用于简单理解和快速区分。有些缺漏和待补充,后续慢慢完善。有任何问题欢迎提出,便于及时修正前言块加密(分组加密):加密算法无法一次性处理过长的明文,这种情况......
  • 密码学(5):常见非对称加密算法
    叨两句密码系列文章,是对接第三方接口时接触到加解密,但是知识体系较乱。希望能整理常见证书、密钥、加解密方式这方面知识,用于简单理解和快速区分。有些缺漏和待补充,后续慢慢完善。有任何问题欢迎提出,便于及时修正1.RSA算法1.介绍2.依赖的数学原理1)将两个大素数相乘十分容......
  • 密码学(1):常见算法分类
    前言有任何问题欢迎提出,便于及时修正......
  • MySQL 5.7 更改初始密码及密码规则
    查看默认的密码规则:showvariableslike'validate_password%';1、修改validate_password_policy参数的值:setglobalvalidate_password_policy=0;2、修改密码长度,默认最短为4位:setglobalvalidate_password_length=6;设置密码:setpassword=password('redhat');......
  • 注册、登录和找回密码渗透
    1、是否注册-sql注入在注册、登录和找回密码处,输入手机号或邮箱、账号名,前端请求是否注册2、是否注册-xss用于是否注册的参数,返回之后可能构成xss3、请求验证码-短信/邮件轰炸轰炸注册、登录和找回密码处,输入手机号或邮箱,如果没有频率限制,可能造成短信/邮件轰炸,干扰用户正常......
  • vue3+ TS pinyin uniapp 索引列表-(A-Z)按首字母排序 ,锚点定位
    获取一维数组地址列表<scriptlang="ts"setup>import{getLocationList}from"@/apis/activity";import{onLoad}from"@dcloudio/uni-app";import{pinyin}from"pinyin-pro"import{ref}from"vue";const......
  • CentOS7 修改root的开机登陆密码+忘记root密码如何修改root密码
    一、修改root的开机登陆密码[root@TS004~]# passwd  //*更改当前的root用户密码命令ChangingpasswordforuserrootNewpassword:    //*(输入新密码,密输入的密码不会显示)Retypenewpassword:     //*(确认输入新密码,密输入的密码不会显示)passwd:allauthe......
  • 3. 密码算法和密码消息的ASN.1描述(openssl应用举例)
    密码算法和密码消息的ASN.1描述(openssl应用举例)目录密码算法的描述密码算法的ASN.1格式密码算法的OID密码消息的描述密码消息的ASN.1描述通用内容消息的格式Data的格式SignedData的格式SignerInfo的格式EnvelopedData的格式SignedAndEnvelopeDdata的格式Dige......
  • typescript中,...是什么符号?
    在TypeScript中,...是扩展操作符(SpreadOperator)和剩余操作符(RestOperator)的语法表示形式。1.扩展操作符(SpreadOperator):用于将数组和对象自动展开并构建可迭代的值列表。语法为"...",通常用在函数调用参数中。例如:constarr1=[1,2,3];constarr2=[4,5,6];constm......