我的團隊的一些成員今天正在討論密碼存儲和一般安全問題。無論如何,討論簡要介紹了GPU加速的暴力攻擊與傳統的僅限於CPU的實現的比較。排列生成
這讓我感興趣,所以我決定玩一些代碼。由於我以前從未寫過類似的東西,所以我決定編寫一個簡單的(僅限CPU的)蠻力文件。我最初的實施涉及一個固定長度(4位)密碼。出於測試的目的,我實現了它:
for(char a = '0'; a <= '9'; ++a)
{
for(char b = '0'; b <= '9'; ++b)
{
for(char c = '0'; c <= '9'; ++c)
{
for(char d = '0'; d <= '9'; ++d)
{
candidate[0] = a; candidate[1] = b;
candidate[2] = c; candidate[3] = d;
// Test 'candidate'...
}
}
}
}
這很好,但顯然不靈活。我試圖推廣上述內容來處理任何密碼長度,但沒有這樣做。出於某種原因,我無法理解這些暴力行爲者使用1-n字符可能性給出「字母表」的邏輯。
有沒有一些常見的算法可以讓你做到這一點?歡迎任何例子。
你正在尋找這個概念被稱爲[遞歸](http://en.wikipedia.org/wiki/Recursion):) – 2010-12-03 19:41:13
複製 - http://stackoverflow.com/q/3183469/21727 – mbeckish 2010-12-03 19:43:43