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);
}
}
}
}
22a2g
22a2q
22a29
22azg
22azq
22az9
2za2g
2za2q
2za29
2zazg
2zazq
2zaz9
z2a2g
z2a2q
z2a29
z2azg
z2azq
z2az9
zza2g
zza2q
zza29
zzazg
zzazq
zzaz9
Press any key to continue . . .
http://bbs.csdn.net/topics/390352804
其余的自己完善。