Objective-cのパスワード強度チェッカーに関する提案を探しています。グーグルをしましたが、ヒットは見つかりませんでした。ここSOでもヒットは見つかりませんでした。私はそれを書くことができましたが、私は最初にここをチェックすると思いました-誰かがそれを実装しましたか?
3 に答える
私は、 zxcvbn(CoffeeScriptではJavaScriptにコンパイル)とPassfault(JavaではWebアプリとして意図されているように見える)の2つの適切なパスワード強度推定器しか認識していません。
(実際、それはちょっとした嘘です。しばらく前に読んだ博士論文に1つありましたが、どこにリンクを張ったのかわかりません。)
私が詳細に調べた他のすべてのパスワード「強度」チェッカーには欠陥があり、多くの場合、深刻な欠陥があります(たとえば、GRCの「干し草の山」は非常に愚かなブルートフォースを想定しています。オープンソースのパスワードクラッカーでさえ、はるかに洗練されています)。英国の大規模なロイヤルティカードスキームのパスワード強度メーターによると、「1Aa」は「GOOD」パスワードでした(「GOOD」が最高の評価です)。
(もう1つの問題は、必要なパスワード強度が使用方法によって異なることです。「W1mCj6B1」のような48ビットパスワードはGoogleアカウントには問題ありませんが、Windows / MacログインパスワードまたはWPAパスフレーズとしては非常に弱いです。)
それらの希少性を考えると、Objective-Cでまともなものを見つける可能性は低いと思います。あなたがそれを書くことになった場合、私はいくつかの提案があります:
- それをC(または多分C ++)で書いてください。これはそれほど費用がかからず、はるかにポータブルになります。Objective-Cは、.NETがWindowsに接続するのとほぼ同じ方法でOS XおよびiOSに接続します(つまり、理論的にはランタイムを他のプラットフォームに移植できます。実際には、これらのプラットフォーム以外では使用されません)。使用量を増やすために、Objective-CAPIを追加できます。
- 非ASCII文字(および一般に非英語言語)をどうするかを決定します。基本的に2つのオプションがあります。
- それらを禁止します(人々はそれに慣れていますよね?)
- 強度推定のためにASCIIにマップします。たとえば、アクセントを取り除き(
NSWidthInsensitiveSearch
およびを参照NSDiacriticInsensitiveSearch
)、いくつかのフープをジャンプしてı/İ/ßをi / I/ssにマップします。kCFStringTransformToLatin
ほとんどのスクリプトをラテンアルファベットに音訳することを約束するものもあります。このビットはUnicodeライブラリに大きく依存するため、Cである必要はありませんが、ICUを使用できる場合があります。
最後に、パスワード強度の見積もりは難しい問題です。の強さを推測し
2jmj7l5rSw0yVb_vlWAYkK_YBwk
ます。今Googleに聞いてください。
この目的のためにメソッドを作成しました。これは古い質問ですが、今のところ実際の質問だと思います。コードのURLは次のとおりです。
https://github.com/ruben-samsonyan/PasswordStrengthChecker/blob/master/passwordChecker.m
Mattt Thompsonは、このためのライブラリを作成しました(この回答を参照)。それは私が見つけた最良の選択肢です。