zoukankan      html  css  js  c++  java
  • 利用排列函數,解密碼

    aaaa

           
    static void Main()
            
    {

                Stopwatch l_cc_stopWatch 
    = new Stopwatch();
                l_cc_stopWatch.Start();

                
    string l_str_password = "icde";

                
    /*
                排列:从n个不同元素中,任取m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列.
                
                從排列的公式中可以看出,從1,2,3中取出2位,結果為:123,132,213,231,321,312,然而用戶填寫的密碼可能是11,22,33
                 
                故:本破解密碼程序只能破解不包含相同元素的密碼。


                
    */


                Dictionary
    <intstring> l_cc_dictionary = new Dictionary<intstring>();
                l_cc_dictionary.Add(
    1"1");
                l_cc_dictionary.Add(
    2"2");
                l_cc_dictionary.Add(
    3"3");
                l_cc_dictionary.Add(
    4"4");
                l_cc_dictionary.Add(
    5"5");
                l_cc_dictionary.Add(
    6"6");
                l_cc_dictionary.Add(
    7"7");
                l_cc_dictionary.Add(
    8"8");
                l_cc_dictionary.Add(
    9"9");
                l_cc_dictionary.Add(
    10"a");  //用10代表字符串"a"
                l_cc_dictionary.Add(11"b");  //
                l_cc_dictionary.Add(12"c");
                l_cc_dictionary.Add(
    13"d");
                l_cc_dictionary.Add(
    14"e");
                l_cc_dictionary.Add(
    15"f");
                l_cc_dictionary.Add(
    16"g");
                l_cc_dictionary.Add(
    17"h");
                l_cc_dictionary.Add(
    18"i");
                l_cc_dictionary.Add(
    19"j");
                l_cc_dictionary.Add(
    20"k");
                l_cc_dictionary.Add(
    21"l");
                l_cc_dictionary.Add(
    22"m");
                l_cc_dictionary.Add(
    23"n");
                l_cc_dictionary.Add(
    24"o");
                l_cc_dictionary.Add(
    25"p");
                l_cc_dictionary.Add(
    26"q");
                l_cc_dictionary.Add(
    27"r");
                l_cc_dictionary.Add(
    28"s");
                l_cc_dictionary.Add(
    29"t");
                l_cc_dictionary.Add(
    30"u");
                l_cc_dictionary.Add(
    31"v");
                l_cc_dictionary.Add(
    32"w");
                l_cc_dictionary.Add(
    33"z");
                l_cc_dictionary.Add(
    34"y");
                l_cc_dictionary.Add(
    35"z");
                
    //可以繼續往下加判斷的字符,如大寫字母A,B,C,!,@,^


                
    int l_int_length = l_cc_dictionary.Count;

                
    for (int i = 1; i <= l_int_length; i++)
                
    {
                     
    bool l_bool_IsRegex = false;

                     
    int[,] source=Combinatorics.Arrange(i, l_int_length);
                     
    int b1 = source.GetUpperBound(0), b2 = source.GetUpperBound(1); 

                     
    for (int a = 0; a <= b2; a++)                                                         //对各返回排列循环   
                     {   
                         
    string l_str_getPassword = null;
                         
    for (int b = 0; b <= b1; b++
                         
    {                
                              l_str_getPassword 
    += l_cc_dictionary[(int)source[b, a]];                     //用序数指针获取原元素的值   
                         }


                         Console.WriteLine(l_str_getPassword);
                                                  
                         
    if (l_str_getPassword == l_str_password)
                         
    {
                            l_bool_IsRegex 
    = true;
                            
    break;
                         }

                     }
      

                    
    if (l_bool_IsRegex)
                    
    {
                        
    break;
                    }

                }


                l_cc_stopWatch.Stop();

                Console.WriteLine(
    "{0}:seconds", l_cc_stopWatch.Elapsed.TotalSeconds);
            }



     using System;   
     
    using System.Collections;   
     
    using System.Data;   
          
    /// <summary>   
          
    /// 组合数学函数集   
          
    /// </summary>   

     public class Combinatorics  
     
    {  
         
    公共函数  
         
    内部核心  
     }
     





  • 相关阅读:
    结巴分词 0.14 版发布,Python 中文分词库
    Lazarus 1.0.2 发布,Pascal 集成开发环境
    Android全屏 去除标题栏和状态栏
    服务器日志现 Android 4.2 传将添多项新特性
    Percona XtraBackup 2.0.3 发布
    长平狐 Android 强制设置横屏或竖屏 设置全屏
    NetBeans 7.3 Beta 发布,全新的 HTML5 支持
    CppDepend现在已经支持Linux
    GromJS 1.7.18 发布,服务器端的 JavaScript
    Apache OpenWebBeans 1.1.6 发布
  • 原文地址:https://www.cnblogs.com/wang123/p/1210706.html
Copyright © 2011-2022 走看看