【发布时间】:2012-06-07 00:40:21
【问题描述】:
我有一个在线 SMF 论坛,当用户注册时,密码在数据库中使用 SHA1 加密。我需要创建一个只有论坛成员才能登录的登录功能的 vb 程序。现在我陷入困境的部分是如何在 Visual Basic 中将密码加密为 SHA1?我包含了一些我不知道是否正确的代码,所以请帮助我。
Imports System.Security.Cryptography
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' declare those variables
Dim password As String
Dim passwordSHA As String
password = txtPassword.Text ' give password the value of the password textbox
Call passwordEncryptSHA(password) ' Lets call the first password encryption function for SHA1
passwordSHA = passwordEncryptSHA(password) ' give the variable the returned SHA value
' finally we will display both values in the corresponding textboxes
txtSHA1.Text = passwordSHA
End Sub
Public Function passwordEncryptSHA(ByVal password As String) As String
Dim sha As New SHA1CryptoServiceProvider ' declare sha as a new SHA1CryptoServiceProvider
Dim bytesToHash() As Byte ' and here is a byte variable
bytesToHash = System.Text.Encoding.ASCII.GetBytes(password) ' covert the password into ASCII code
bytesToHash = sha.ComputeHash(bytesToHash) ' this is where the magic starts and the encryption begins
Dim encPassword As String = ""
For Each b As Byte In bytesToHash
encPassword += b.ToString("x2")
Next
Return encPassword ' boom there goes the encrypted password!
End Function
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
谢谢,请不要吝啬,因为我还在学习(我 15 岁)!
【问题讨论】:
-
Sha1 不是加密,而是散列。请使用盐... 不像 LinkedIn money.cnn.com/2012/06/06/technology/linkedin-password-hack/…
-
@EricJ。哇。真是一群白痴。感谢您的警告。
-
您的代码看起来或多或少是正确的,如果其意图是获取纯文本密码并返回该密码的 SHA1 哈希(未加盐!!!请使用加盐)。究竟是什么不适合你?
-
嗨,埃里克,我该怎么加盐呢?请问你能给我一个关于如何加盐的线索吗?我确实提到我是这个主题的新手 0.0 无论如何,我感谢您的贡献,谢谢!
-
谁能帮帮我?我还是卡住了!
标签: vb.net