2013-04-28 3 views
0

나는 내 웹 사이트 암호 해시를 시도하고 있는데 조금 실험 해봤는데 결과가 나왔다. 이제 이것이 실제로 내 암호를 해싱하는 좋은 방법인지 묻습니다.ASP.NET || 이것은 암호를 해시하는 좋은 방법입니까?

내 주요 코드 :

Imports System.Security.Cryptography 

Partial Class _Default 
Inherits System.Web.UI.Page 

Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
    Dim strWoordOmTeHashen As String 
    Dim strSalt1, strSalt2, strSalt3 As String 
    Dim random As New Random 

    Dim arrSalt1(255), arrSalt2(255), arrSalt3(255) As String 

    For i = 0 To 255 
     arrSalt1(i) = random.Next(1, 26).ToString 
     arrSalt2(i) = random.Next(1, 26).ToString 
     arrSalt3(i) = random.Next(1, 26).ToString 
    Next 

    For i = 0 To 255 
     arrSalt1(i) = VeranderGetalNaarLetter.VeranderGetalNaarLetter(CInt(arrSalt1(i))) 
     arrSalt2(i) = VeranderGetalNaarLetter.VeranderGetalNaarLetter(CInt(arrSalt2(i))) 
     arrSalt3(i) = VeranderGetalNaarLetter.VeranderGetalNaarLetter(CInt(arrSalt3(i))) 
    Next 

    For i = 0 To 255 
     strSalt1 &= arrSalt1(i) 
     strSalt2 &= arrSalt2(i) 
     strSalt3 &= arrSalt3(i) 
    Next 


    strWoordOmTeHashen = strSalt1 & strSalt2 & txtWoord.Text & strSalt3 

    'Sha512 zoder salt 
    Dim sham As New SHA512Managed 
    Dim result As Byte() 
    Dim data As Byte() 
    Dim hexstring As String 

    data = ASCIIEncoding.ASCII.GetBytes(strWoordOmTeHashen) 
    result = sham.ComputeHash(data) 

    For i = 0 To UBound(result) 
     hexstring &= Hex(result(i)).ToLower 
    Next 

    TextBox1.Text = hexstring 

End Sub 
End Class 

당신은 내가 함수를 호출하고있어 것을 알 수 있습니다. 공공 클래스 VeranderGetalNaarLetter

Public Shared Function VeranderGetalNaarLetter(intSalt As Integer) As String 

    Dim strAlfabet As String = "!abcdefghijklmnopqrstuvwxyz" 
    Dim strLetter As String 

    strLetter = strAlfabet.Substring(intSalt, 1) 


    Return strLetter 
End Function 


End Class 

모든 의견을 환영합니다 :이 함수를 호출하고 있습니다. 내 프로그래밍을 조금 개선하기 위해 의견을 얻고 싶습니다. 사전에 감사합니다 :)

답변

1

이것이 잘못된 것은 아니지만 가장 좋은 방법은 아닙니다. 비밀번호 해싱은 매우 지루하며 때로는 바퀴를 다시 발명하는 것은 가치가 없습니다. 암호를 해시해야하는 경우 기존 라이브러리를 사용해야합니다. 제발 BCrecrypt를보십시오 http://bcrypt.codeplex.com/

0

이 내가 일반적으로 물건을 해시하는 데 사용하는 코드는, 실제로 정말 간단한 함수 :

Function hash(text As String) As String 
    Dim encoder As New System.Text.UnicodeEncoding 
    Dim sha256 As New System.Security.Cryptography.SHA256CryptoServiceProvider 
    Return Convert.ToBase64String(sha256.ComputeHash(encoder.GetBytes(text))) 
End Function 

행운의있다!

+0

그래,하지만 소금에 대해 읽고 있었어. 나는 네가 소금을 사용하는 것을 보지 않는다. 필요하거나 그렇지 않은가? –

관련 문제