2009-12-01 5 views
10

私のASP.NETウェブアプリケーションでは、私はSHA512で自分のパスワードをハッシュしています。データベースにSHA512パスワードハッシュを保存する

私はそれらをデータベース(SQL2005)にどのように格納するべきかはっきりしていません。以下のコードは、文字列としてハッシュを作成する方法の基本を示しています。それをデータベースに挿入すると、長さが一貫して作成されたように見えます。

文字列として保持していれば、SHA512では常に88文字になります私はGoogleにいくつかの奇妙なものを見たので)?

Dim byteInput As Byte() = Encoding.UTF8.GetBytes(sSalt & sInput) 
Dim hash As HashAlgorithm = New SHA512Managed() 
Dim sInsertToDatabase As String = Convert.ToBase64String(hash.ComputeHash(byteInput)) 
+0

asp.netのメンバーシップを使用する場合は、[リンクテキスト](http://altairiswebsecurity.codeplex.com)/をご覧ください。それは非常にオープンなテーブル構造を持っているので、現在のデータベースと統合する方が簡単かもしれません。 – jhexp

答えて

15

SHA512は512ビットまたは64バイトを出力します。 64バイトをバイナリ列に格納することができます。

アプリケーションの外部でハッシュを処理する場合は、今行っているように、Base64文字列を格納する方が快適です。 Base64では、オーバーヘッドの約33%が追加されるため、文字列は常に88文字になります。

つまり、ASP.NETにはfairly comprehensive authentication systemの組み込み関数が用意されています。

+0

.NETのバイト配列は、T-SQLのBINARY(またはVARBINARY)に直接マップされます – RickNZ

+0

ありがとう@RickNZ - 非常に高く評価されています。 – Chris

+1

すべての明確化のための@Vinko - 私はセキュリティモデルを所有していて、何が起こっているのか正確に理解しています。いつでもパスワードの使い勝手をASP.NETから外すことができます。前。おそらく私はコントロールフリークか何かであると誤解されるかもしれません;) – Chris

関連する問題