暴力破解算法(Brute Force)
Brute Force算法,即暴力算法,是普通的模式匹配算法,Brute Force算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。Brute Force算法是一种蛮力算法。
1 public delegate bool BruteForceCallback(ref char[] testChars); 2 3 public static bool BruteForce(string testChars, int startLength, int endLength, BruteForceCallback bruteForceCallback) 4 { 5 for (int len = startLength; len <= endLength; ++len) 6 { 7 char[] chars = new char[len]; 8 9 for (int i = 0; i < len; ++i) 10 chars[i] = testChars[0]; 11 12 if (bruteForceCallback(ref chars)) 13 return true; 14 15 for (int i1 = len - 1; i1 > -1; --i1) 16 { 17 int i2 = 0; 18 19 for (i2 = testChars.IndexOf(chars[i1]) + 1; i2 < testChars.Length; ++i2) 20 { 21 chars[i1] = testChars[i2]; 22 23 if (bruteForceCallback(ref chars)) 24 return true; 25 26 for (int i3 = i1 + 1; i3 < len; ++i3) 27 { 28 if (chars[i3] != testChars[testChars.Length - 1]) 29 { 30 i1 = len; 31 goto outerBreak; 32 } 33 } 34 } 35 36 outerBreak: 37 if (i2 == testChars.Length) 38 chars[i1] = testChars[0]; 39 } 40 } 41 42 return false; 43 }
使用举例
1 string dict = "abcde12345"; 2 string password = "a1b2c3d4"; 3 4 5 BruteForceCallback bruteForceCallback = delegate (ref char[] testChars) 6 { 7 var str = new string(testChars); 8 return (str == password); 9 }; 10 11 12 bool result = BruteForce(dict, 1, password.Length, bruteForceCallback);
输出结果:
true
本文来自博客园,作者:古道轻风,转载请注明原文链接:https://www.cnblogs.com/88223100/p/brute-force-algorithm.html
分类:
C#
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2009-03-09 Javascript取select的选中值和文本
2009-03-09 FreeNAS系统基本安装篇