首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#打造字典

2013-09-09 
C#制作字典用C#制作一个密码字典,自动列决一个单词的变形,比如password,列决出passw0rd PassWord等等。请问

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

其余的自己完善。

热点排行