Fuerza bruta algoritmo, que la violencia algoritmo, es un patrón común algoritmos coincidentes, pensó bruta algoritmo de fuerza es el primer carácter del patrón de cadena de destino S T cadena del primer carácter a la altura, si es igual, la comparación continúa en S segundo carácter y el segundo carácter T; si no igual, a continuación, el segundo carácter de la S y T del primer carácter, seguido de la comparación continúa, hasta que el resultado final coincidente obtiene. Fuerza bruta algoritmo es un algoritmo de fuerza bruta.
1 pública delegado bool BruteForceCallback ( ref Char [] testChars); 2 3 público estática bool BruteForce ( cadena testChars, int startLength, int endLength, BruteForceCallback bruteForceCallback) 4 { 5 para ( int len = startLength; len <= endLength; ++ len) 6 { 7 Char [] caracteres = nuevo Char [len ]; 8 9 para ( int i =0 ; i <len; ++ i) 10 caracteres [i] = testChars [ 0 ]; 11 12 si (bruteForceCallback ( ref caracteres)) 13 de retorno verdadera ; 14 15 para ( int i1 = len - 1 ; i1> - 1 ; - i1) 16 { 17 int i2 = 0 ; 18 19 para (i2 = testChars.IndexOf (caracteres [i1]) + 1 ; i2 <testChars.Length; ++ i2) 20 { 21 chars [i1] = testChars [i2]; 22 23 si (bruteForceCallback ( ref caracteres)) 24 de retorno verdadera ; 25 26 para ( int i3 = i1 + 1 ; i3 <len; ++ i3) 27 { 28 si (caracteres [i3] = testChars [testChars.Length - 1 ]) 29 { 30 i1 = len; 31 Goto outerBreak; 32 } 33 } 34 } 35 36 outerBreak: 37 si (i2 == testChars.Length) 38 caracteres [i1] = testChars [ 0 ]; 39 } 40 } 41 42 retorno falsa ; 43 }
Ejemplo de uso
1 cadena dict = " abcde12345 " ; 2 string password = " a1b2c3d4 " ; 3 4 5 BruteForceCallback bruteForceCallback = delegado ( ref Char [] testChars) 6 { 7 var str = nuevos de cadena (testChars); 8 de retorno (str == contraseña); 9 }; 10 11 12 bool resultado = BruteForce (dict, 1, Password.Length, bruteForceCallback);
salida:
cierto