2

私はすでにこのコードで「パスワード」入力を変換しています

Dim password As String = (MyPass + MyUName)
    Dim mhash As HashAlgorithm = New SHA1CryptoServiceProvider
    Dim bytValue() As Byte = System.Text.Encoding.UTF8.GetBytes(password)
    Dim bytHash() As Byte = mhash.ComputeHash(bytValue)
    mhash.Clear()
    ENPass = Convert.ToBase64String(bytHash)

そして、このコードで bytHash と同じバイト配列を取り戻しています

Dim Text As String = Convert.ToString(OfficeCommsRecs(5))
    Dim oReturn As New StringBuilder
    Dim Separator As String = ("")
    For Each Character As Byte In ASCIIEncoding.ASCII.GetBytes(Text)
        oReturn.Append(Convert.ToString(Character, 2).PadLeft(8, "1"))
        oReturn.Append(Separator)
    Next
    Dim myPass As Object = oReturn

パスワードを取り戻すにはどうすればよいですか?

4

3 に答える 3

2

ASCIIEncoding.ASCII.GetBytes(Text)バイト配列を返します。の値として、データ アクセス コードで直接使用しますSqlParameter

質問に投稿した残りのコードは必要ありません。人間が読めるバイト配列の表現を作成するだけですが、データベースはそれを理解していません。ではByte()なく が必要Stringです。

アップデート

私は自分がばかだと気づきました - 技術的な問題 (バイナリ データの保存/読み込み) について考え続けていて、全体像を見逃していました:パスワードを読み返すことは想定されていません。したがって、ハッシングは正しい方法ですが、それについては、この素晴らしい記事をチェックしてください: http://codahale.com/how-to-safely-store-a-password/

于 2013-04-07T19:22:06.053 に答える
0

バイナリ形式の文字列を挿入するための以下の例を見つけてください。

---テーブルの作成

Create Table Test (パスワード binary(1000) )

---挿入値のプロシージャを作成

Proc InsertValue @password nvarchar(200) を Test(Password) 値への挿入として作成します (Convert(binary,@password))

--値を挿入

Exec InsertValue 'NewPassword'

-----バイナリデータと変換後のデータを取得

Select Password , Convert(nvarchar(200), Password) Password From Test

于 2013-04-08T17:38:16.380 に答える