2011-06-20 7 views
2

vb(ではなく、C)の関数またはサブを見つけるのは非常に難しいです。これは、指定された文字列をsha-1に簡単に変換する方法を提供しますまたは理想的にsha512)ハッシュ。va.net 3.5のsha-1作成

誰かがVBで関数を提供できる場合、非常に便利です。

最寄りの試み:

Function create_hash(ByVal password, ByVal salt) 

     Dim input As [Char]() = "string to hash".ToCharArray() 
     Dim secret As New SecureString() 


     For idx As Integer = 0 To input.Length - 1 
      secret.AppendChar(input(idx)) 
     Next SecurePassword.MakeReadOnly() 

     Dim pBStr As IntPtr = Marshal.SecureStringToBSTR(secret) 
     Dim output As String = Marshal.PtrToStringBSTR(pBStr) 
     Marshal.FreeBSTR(pBStr) 
     Dim sha As SHA512 = New SHA512Managed() 
     Dim result As Byte() = sha.ComputeHash(Encoding.UTF8.GetBytes(output)) 



     Return result 
    End Function 

しかし、これはeveyの使用で青の下線SecurePasswordと元帥に視覚的stuidoの原因となります。これらは宣言されていない変数としてマークされていますが、それらを宣言することで他の問題が発生します。

+0

は、あなたがこれまで持っていますか? – mdm

+0

私が今までに見つけた最良の解決策で答えを編集しました。 – YsoL8

+0

'次のSecurePassword.MakeReadOnly()' - それはどういう意味ですか? – Heinzi

答えて

2

documentation for the System.Security.Cryptography.SHA512 classをご覧ください。このよう

Dim data(DATA_SIZE) As Byte 
Dim result() As Byte 
Dim shaM As New SHA512Managed() 
result = shaM.ComputeHash(data) 

(無視して、あなたが一番上にやっているの塩漬け):

Function create_hash(ByVal password, ByVal salt) As Byte() 
    Dim sha As SHA512 = New SHA512Managed() 
    Dim result As Byte() = sha.ComputeHash(Encoding.UTF8.GetBytes(password & salt)) 
    Return result 
End Function 
+0

私は似たような解決策を試みましたが、visual studioはバイトが型であり式として使用できないために私に知らせています。実際には、それが私が試した1つの解決策です。 – YsoL8

+1

@ YsoL8それは 'Dim result As Byte()'が無効であるため、mdmが持つようにする必要があります。 – msarchet

+0

DATA_SIZEにはどのような値が有効ですか? – YsoL8