使用されている暗号化/エンコードの種類を調べる方法はありますか?
例えば,パスワードを暗号化してデータベースに保存するWebアプリケーションをテストしています(WeJcFMQ/8+8QJ/w0hHh+0g==
)。使われているハッシュ化や暗号化をどのように判断すればよいでしょうか?
編集:今、hashIDというとてもクールなスクリプトに気づきました。その名の通り、とても素晴らしいものです。
一般的には、経験を生かして教育的な推測をすることが、このようなことを行う方法です。
ここに、非常に多くのハッシュ出力を持つリストがありますので、それぞれがどのように見えるかを知り、署名やパターンを作成したり、単に光学的に検証したりすることができます。
- [オンラインハッシュクラックハッシュジェネレータ](https://www.onlinehashcrack.com/hash-generator.php)
- [InsidePro Software Forum > Hash Types](https://web.archive.org/web/20160403135857/https://forum.insidepro.com/viewtopic.php?t=8225) (via Archive.org)
まず注意することは、主に2つあります。
- ハッシュの長さ(ハッシュ関数ごとに出力の長さが決まっています)。
- 使用されているアルファベット(すべて英字なのか、数字は0~9、A~Fは16進数なのか、特殊文字があれば教えてください。
いくつかのパスワードクラックプログラム(例えばJohn the ripper)は、使用されたアルゴリズムを推測するために入力にパターンマッチングを適用しますが、これは一般的なハッシュに対してのみ機能します。例えば、任意のハッシュ出力を取り、各文字を1ずつ回転させると、ほとんどのパターン・マッチング・スキームは失敗します。