C# 批量生成隨機(jī)密碼必須包含數(shù)字和字母并用加密算法加密
要求:
密碼必須包含數(shù)字和字母
思路:
1.列出數(shù)字和字符。 組成字符串 :chars
2.利用randrom.Next(int i)返回一個(gè)小于所指定最大值的非負(fù)隨機(jī)數(shù)。
3. 隨機(jī)取不小于chars長(zhǎng)度的隨機(jī)數(shù)a,取字符串chars的第a位字符。
4.循環(huán) 8次,得到8位密碼
5.循環(huán)N次,批量得到密碼。
代碼實(shí)現(xiàn)如下 Main函數(shù):
static void Main(string[] args) { string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; Random randrom = new Random((int)DateTime.Now.Ticks); string path1 = @"C:\Users\lenovo\Desktop\pws.txt"; for (int j = 0; j < 10000;j++ ) { string str = ""; for (int i = 0; i < 8; i++) { str += chars[randrom.Next(chars.Length)];//randrom.Next(int i)返回一個(gè)小于所指定最大值的非負(fù)隨機(jī)數(shù) } if (IsNumber(str))//判斷是否全是數(shù)字 continue; if (IsLetter(str))//判斷是否全是字母 continue; File.AppendAllText(path1, str); string pws = Md5(str,32);//MD5加密 File.AppendAllText(path1, "," + pws + "\r\n"); } Console.WriteLine("ok"); Console.Read(); }
巧用String.trim 函數(shù),判斷是否全是數(shù)字,全是字母。
說(shuō)明:string.trim 從 String 對(duì)象移除前導(dǎo)空白字符和尾隨空白字符。
返回:一個(gè)字符串副本,其中從該字符串的開(kāi)頭和末尾移除了所有空白字符。
有一個(gè)重載:string.Trim(params char[] trimChars)
//從當(dāng)前System.string對(duì)象移除數(shù)組中指定的一組字符的所有前導(dǎo)匹配項(xiàng)和尾部匹配項(xiàng)
trimChars:要?jiǎng)h除的字符數(shù)組
方法實(shí)現(xiàn)如下代碼:
//判斷是否全是數(shù)字 static bool IsNumber(string str) { if (str.Trim("0123456789".ToCharArray()) == "") return true; return false; } //判斷是否全是字母 static bool IsLetter(string str) { if (str.Trim("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()) == "") return true; return false; }
用MD5加密,算法代碼實(shí)現(xiàn)如下:
/// <summary> /// MD5加密 /// </summary> /// <param name="str">加密字元</param> /// <param name="code">加密位數(shù)16/32</param> /// <returns></returns> public static string Md5(string str, int code) { string strEncrypt = string.Empty; MD5 md5 = new MD5CryptoServiceProvider(); byte[] fromData = Encoding.GetEncoding("GB2312").GetBytes(str); byte[] targetData = md5.ComputeHash(fromData); for (int i = 0; i < targetData.Length; i++) { strEncrypt += targetData[i].ToString("X2"); } if (code == 16) { strEncrypt = strEncrypt.Substring(8, 16); } return strEncrypt; }
生成批量密碼,和加密后的密碼如下圖:
以上所述是小編給大家介紹的C# 批量生成隨機(jī)密碼必須包含數(shù)字和字母并用加密算法加密,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
C#實(shí)現(xiàn)Post數(shù)據(jù)或文件到指定的服務(wù)器進(jìn)行接收
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)C#實(shí)現(xiàn)Post數(shù)據(jù)或文件到指定的服務(wù)器進(jìn)行接收,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下2024-03-03C#使用BitConverter與BitArray類(lèi)進(jìn)行預(yù)定義基礎(chǔ)類(lèi)型轉(zhuǎn)換
這篇文章介紹了C#使用BitConverter與BitArray類(lèi)進(jìn)行預(yù)定義基礎(chǔ)類(lèi)型轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法
某論壇的評(píng)論區(qū)模塊,發(fā)現(xiàn)這功能很不錯(cuò),琢磨了一晚上做了大致一樣的,用來(lái)當(dāng)做 注冊(cè)模塊 的頭像綁定功能,下面通過(guò)實(shí)例代碼給大家介紹下C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法,感興趣的朋友一起看看吧2021-11-11c# 如何對(duì)網(wǎng)絡(luò)信息進(jìn)行相關(guān)設(shè)置(ip,dns,網(wǎng)關(guān)等)
這篇文章主要介紹了c# 網(wǎng)絡(luò)適配器的相關(guān)操作,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03詳解如何在ASP.NET Core配置請(qǐng)求超時(shí)中間件
本文參考官方文檔,為大家詳細(xì)介紹如何使用Asp.net core 8.0 的最小API 模板項(xiàng)目,配置超時(shí)中間件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01c# FTP上傳文件實(shí)例代碼(簡(jiǎn)易版)
下面小編就為大家分享一篇c# FTP上傳文件的實(shí)例代碼,超簡(jiǎn)單哦~希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧,2017-12-12C#中parallel.foreach實(shí)現(xiàn)多線程處理
Parallel.ForEach方法是C#中的一個(gè)并行循環(huán)方法,它可以并行地對(duì)一個(gè)集合進(jìn)行迭代操作,本文主要介紹了C#中parallel.foreach實(shí)現(xiàn)多線程處理,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02