這篇文章主要介紹了C# 批次產生隨機密碼必須包含數字和字母並用加密演算法加密,需要的朋友參考下
要求:
密碼必須包含數字和字母
想法:
1.列出數字和字符。 組成字串 :chars
2.利用randrom.Next(int i)傳回小於所指定最大值的非負隨機數。
3. 隨機取不小於chars長度的隨機數a,取字串chars的第a位元字元。
4.循環 8次,取得8位元密碼
5.循環N次,大量取得密碼。
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)返回一个小于所指定最大值的非负随机数 } if (IsNumber(str))//判断是否全是数字 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 函數,判斷是否全是數字,全是字母。
說明:string.trim 從 String 物件移除前導空白字元和尾隨空白字元。
傳回:字串副本,其中從字串的開頭和末尾移除了所有空白字元。
有一個重載:string.Trim(params char[] trimChars)
//從目前System.string物件移除數組中指定的一組字元的所有前導匹配項和尾部匹配項
#方法實作以下程式碼:
//判断是否全是数字 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加密,演算法程式碼實作如下:
/// <summary> /// MD5加密 /// </summary> /// <param name="str">加密字元</param> /// <param name="code">加密位数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#批量產生隨機密碼必須包含數字和字母並用加密演算法加密的代碼案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!