2011-12-23 9 views
1

私の同僚は、データベースにログインパスワードをエンコードして保存する商用プログラムを使用しています。既知のハッシュコードを使用した暗号化アルゴリズムの決定

今、私はいくつかの他のタスクを達成するために別のプログラムを開発していますが、私は私の同僚は、混乱を避けるために、彼らの同じユーザ名とパスワードで、このプログラムに認証します。

問題は、私が持っていない(おそらく決して)か、である彼らが使用したどの暗号化アルゴリズムを決定するために、任意のソースコード。 いくつかのテストを実行し、同じパスワードが常に24文字の長さの同じハッシュコードを生成することを確認しました。例えば;

1   XeVTgalUq/gJxHtsMjMH5Q== 

123456 0Q8UhOcqClGBxpqzooeFXQ== 

使用したアルゴリズムを判断する方法はありますか?事前に おかげで、

+0

まさかを逆にしますハッシュ関数は残念です... – andreapier

+0

これらは16バイトの出力のおそらくbase64でエンコードされたバージョンです。これは、MD5が候補者であり、MD4またはMD2である可能性は低いと示唆している。 –

+0

*もし彼らが* coworkers *であれば、あなたが*どのアルゴリズムを使ったのか*尋ねるべきではありませんか?または、社内のコミュニケーションが禁止されている奇妙な会社にいますか? –

答えて

0

いいえ。それが暗号化/ハッシングのポイントです。逆転するのは簡単ではないはずですので、不透明になっているはずです。あなたができる唯一のことは、SHA-1のようないくつかのよく知られているハッシュアルゴリズムを試し、ハッシュ値が他のプログラムと一致するかどうかを確認することです。しかし、他のプログラムが「塩」で追加されているのか、複数のものを一緒にハッシュしているのかを知る方法はありません。ユーザー名+パスワードまたはその他の方式。だからあなたはおそらくその正面に運が出ていないでしょう。

ひとつのアイデア、あなたの新しいプログラムを試みることができる:ユーザーが以前にログインしたことがない場合、それらは任意のパスワードで初めてでログインすることができます。ユーザーに、他のプログラムと同じパスワードを使用する必要があることを伝えます。その後、ユーザーがログインすると、その値を取得し、独自のハッシングスキームを使用してハッシュ値をハッシュし、将来のログインのために保存します。したがって、最終的には、他のプログラムの暗号化方式をリバースエンジニアリングすることなく、目的とする結果を得ることができます(ユーザーは同じパスワードを使用できます)。

は今、明らかにこのアプローチの欠点は、それが最初のログインのために、すべてのセキュリティで保護されていないということです。実際のユーザーが最初にログインしてパスワードをロックする前に、他のユーザーのアカウントがそのユーザーとしてログインした場合、他のユーザーのアカウントを乗っ取る可能性があります。これは、新しいプログラムに機密データがプリロードされていない場合にのみ有効です。また、あなたはこの種のものが起こった場合、実際のユーザーは、彼らがログインできないことを報告したとき、あなたは簡単にそれを修正することができるように、ユーザーのパスワードをリセットするには、管理者のための能力が必要になります。

+0

コメントありがとう! MD5、SHA、SHA1、UTF-8-16-32モードの組み合わせを試してみました。しかし、私は認めなければならない、あなたの解決策は、パスワードに一致する素晴らしいです!今すぐ最初の試行でパスワードを正しく入力するようにしてください:) – JuniorDev

+0

最初のログインでは、入力したパスワードを古いプログラムにコピーしてそこに一致するかどうかを確認する小さなルーチンを作成します。ユーザーごとに1回だけ必要です(パスワードが正しい場合)。 – rossum

関連する問題