2016-05-13 3 views
1

checkmarxおよびwhitehat sentinel security fixes。問題は、SHA1からSHA2に変更すると自動的には機能しません。 新しいハッシュパスワードのデータベースのテーブルにすべての何百ものユーザーに一致するつもりですですです。私が何をしたと思います何SHA1からSHA2にアップグレードすると、C#アプリケーションのすべてが破損します。

、誰も変更そのパスワードを作りますか?

C#コードの変更は:あなたがよく知っているように

//SHA1 sha = SHA1.Create(); 
SHA256 sha = SHA256Managed.Create(); 

byte[] buff = sha.ComputeHash(Encoding.Unicode.GetBytes(SaltAndPwd)); 
+1

うーん、いや、もっと大きなハッシュは別のパスワードを必要としません。既存のパスワードは一度しか認識できません。あなたがそれを持っているとき、古いハッシュで認証し、新しいハッシュを生成し、古いハッシュを削除することができます。インターネット上の見知らぬ人からのセキュリティアドバイスを受けてはいけません。 –

+0

良い点とあなたは見知らぬ人ではありません。 –

答えて

0

、ハッシュは元の値と元の値を知らなくても変換することができます何に戻って復号化することができないことを意味一方通行です。 SHA2でさえ、「異なる」およびより高度なハッシングアルゴリズムを備えています。

1つの悪い選択肢は、SHA2の前に登録されていたユーザーを別の方法でマークすることです。ただし、SHA1を使用している場合、古いSHA1を使用しているユーザーは、LinkedInサイトのようなハッキングにさらされる可能性があります。

私の考えはあなたと同じです。 Big InternetサイトでPassword Change Recommendationが表示されているのと同じように、古いパスワードの検証やユーザーからの新しいパスワードの取得といった簡単な処理を行うだけです。役立つかもしれないSHA2であるPWDTKよう

Nugetパッケージは...

+0

コメントでHans Passantのアイデアは正しいと思います。彼の考えでは、古いパスワードとユーザー入力のハッシュ値を比較し、正しい場合はSHA2でユーザーの入力をハッシュしてこの新しいハッシュ値を更新するコードを追加します値を新しい列に変更します。以前のパスワード列を使用して新しくハッシュされたパスワードを保存すると、古いパスワードと新しいパスワードが混在するため、SHA2へのアップグレードが完了した時点を知ることが困難になるため、新しい列を作成することをお勧めします。ない。素敵なプログラミングをしてください! –

関連する問題