9

私の ASP.NET Web アプリでは、ユーザーのパスワードを SHA512 でハッシュしています。

多くの SO'ing と Google にもかかわらず、データベース (SQL2005) にそれらを格納する方法が不明です。以下のコードは、ハッシュを文字列として作成する方法の基本を示しており、現在それをデータベースを Char(88) 列に変換します。これは、一貫して作成される長さのようです

それを文字列として保持するのが最善の方法ですか?もしそうなら、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))
4

1 に答える 1

14

SHA512は512ビットまたは64バイトを出力します。必要に応じて、これらの64バイトをバイナリ列に格納できます。

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

とはいえ、ASP.NETにはかなり包括的な認証システムが組み込まれているので、これを使用する必要があります。

于 2009-12-01T21:15:38.460 に答える