C#制作字典
用C#制作一个密码字典,自动列决一个单词的变形,比如password,列决出passw0rd PassWord等等。
请问有没有思路?
[解决办法]
password,列决出passw0rd PassWord,如果是仅仅这样的话,可以定义一个函数,随机的对单词的某一位进行ToUpper操作。
[解决办法]
枚举相近的单词:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<List<char>> simchr = new List<List<char>>()
{
new List<char>() { '0', 'o' },
new List<char>() { '2', 'z' },
new List<char>() { 'g', 'q', '9' }
};
string source = "22az9";
string source1 = string.Join("", source.Select((x, i) => simchr.Any(y => y.Any(z => z == x)) ? "{" + simchr.Single(y => y.Any(z => z == x)).FirstOrDefault() + ":" + i.ToString() + "}" : x.ToString()));
IEnumerable<string> query = new string[] { source1 };
while (Regex.IsMatch(query.First(), @"\{\w:\d+\}"))
{
string s = Regex.Match(query.First(), @"\{(\w):\d+\}").Value;
string c = Regex.Match(query.First(), @"\{(\w):\d+\}").Groups[1].Value;
query = query.SelectMany(x => simchr.First(y => y.First().ToString() == c).Select(y => x.Replace(s, y.ToString())));
}
foreach (var item in query)
{
Console.WriteLine(item);
}
}
}
}