2009-01-13 70 views
1

想在C++中創建一個強密碼。有什麼建議麼?如何在C++中創建強密碼字符串?

  • 我假定它應該使用α(上 和下部),數字,特殊字符 。

  • 這將是一件好事,能夠 指定最小長度。

  • 這將是巨大的,以避免那些難以從視覺上分辨 像「O」和「O」字

  • 這將是巨大的,無效的所有 人物一樣,字典中的字, 逆轉的話,名字。

其他提示?我在哪裏可以找到這樣的代碼?

回答

2

APG(自動密碼生成器)實現除了最後一項要求之外的所有內容(無字典詞/用戶名/重複字符)。它包括可發音和完全隨機的密碼生成算法。可指認的密碼看起來是這樣的:

yevGaijra 
clishahopp 
jewnAms8 
RacMevOm 
Duheamch& 
raicsant~

它是用C語言編寫的,可以在類似BSD的許可下使用。

密碼方面,我不確定你最後的要求是否有效...?如果密碼的生成是真正隨機的,那麼密碼aaaaaaaa與密碼6-n&1jIK的密碼相同,如果攻擊者知道你的算法,那麼通過禁止密碼aaaaaaaa,你可以減少攻擊者的搜索空間。

+0

我喜歡關於德國Enigma加密機器如何被部分破壞的故事,它注意到它從未將明文字符加密爲相同的密文字符,它*總是*選擇了不同的字母。 – 2009-01-13 20:59:12

3

有幾種方法。容易不一定是最好的

創建一個字符串,表示您想要定義的所有字符(意思是說,不是O或0的,不管),然後用隨機字符填充隨機字符串。

下一步是繼續生成,直到您通過所有斷言。也就是說,檢查字典中的單詞,反向名稱等。

有些時候,生成時間會比預期的要長,但仍然會比您注意到的要快。

2

你可以使用OpenSSL's random generator,然後base64對它進行編碼。 (不會給你所有的隨機角色,但會讓你很多。)可悲的是,它也不會做類似字符的密碼。我最喜歡的生成器是here,它提供了你正在討論的功能。 (僅限網絡,可悲)

1

有幾個來源使用的記錄要求,如FIPS 181

我會建議看看流行的Automated Password Generator實用程序的文檔。看看它提供的選項和功能對你來說可能會有很長的路要走。

此外,請查看checking您的生成密碼,以便它們符合您的應用程序的閾值。

維基百科還列出了一些existing designs和標準。

相關問題