faiqaa Ответов: 1

Как зашифровать пароль, введенный в форму входа с помощью VB?


В моей форме входа пользователь должен ввести имя пользователя и пароль в соответствующие текстовые поля, а затем нажать кнопку Войти. Имя пользователя и пароль уже сохранены в текстовом файле, каждый раз, когда пользователь пытается ввести имя пользователя и пароль, введенные им, будут сопоставлены с теми, которые были сохранены в текстовом файле, и если они совпадут, только тогда пользователю будет разрешен доступ. Теперь я хочу иметь возможность зашифровать пароль, введенный в текстовое поле, я пробовал искать в интернете, но не нашел никакой помощи. У кого-нибудь есть какие-нибудь идеи? Заранее спасибо.

Что я уже пробовал:

Dim intnum1 As Integer

    Dim str2 As String

    Dim icounter As Integer

 

 

    Private Sub cmdCipher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCipher.Click

        For icounter = 1 To Len(txtCTC.Text)

            intnum1 = Asc(Mid(txtCTC.Text, icounter, 1)) 'Converts the letter to a ANSI number

            intnum1 = intnum1 + 3 'Adds three to the ANSI number

            str2 = Chr(intnum1)   'Converts the ANSI number back to a letter

 

            txtCipher.Text = txtCipher.Text & str2 'Adds the ciphered letter to the end of whatever was previously in the textbox

        Next

    End Sub

 

 

    Private Sub cmdDecipher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDecipher.Click

        For icounter = 1 To Len(txtCipher.Text)

            intnum1 = Asc(Mid(txtCipher.Text, icounter, 1)) 'Converts the letter to a ANSI number

            intnum1 = intnum1 - 3 'Adds three to the ANSI number

            str2 = Chr(intnum1)   'Converts the ANSI number back to a letter

 

            lbldecrypt.Text = lbldecrypt.Text & str2 'Adds the ciphered letter to the end of whatever was previously in the textbox

        Next

    End Sub

End Class

1 Ответов

Рейтинг:
0

Richard Deeming

Не шифруйте его, а хэшируйте.

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]

Сгенерируйте произвольную соль для каждого пароля; добавьте (или допишите) ее к байтам пароля; затем сгенерируйте односторонний хэш пароля. Храните соль и хэш в своем файле.

Когда вам нужно проверить пароль, загрузите соль и хэш из файла для пользователя. Соедините соль с байтами введенного пароля точно так же, как и раньше. Создайте односторонний хэш объединенного значения и сравните его с хэшем, загруженным из файла.


faiqaa

Привет, спасибо за ваш ответ, Вы имеете в виду что-то вроде этого?

Вариант Строго По
Система Импорта.Текст
Система Импорта.Безопасность.Криптография

Общественного Класса Form1
CreateSalt Функции(MinimumLen Как Целое, Максимальнаядлина Как Целое) в виде строк
Dim StrReturn As String = String.Пустой
Тусклый Чарстоуз как струна = "ACBDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmmopqrstuvwxyz0123456789,.<>/?';:[]{}`~!@#$%^&*()-_=+"
Dim GetRandom Как Новый Случайный
Тусклый Индекс Как Целое Число = 0
For Index = 1 To GetRandom.Next(MinimumLen, MaximumLength + 1)
StrReturn &= CharsToUse.Подстрока(GetRandom.Next(0, CharsToUse.Длина), 1)
Следующий
Возврат StrReturn
Конечная Функция
Функция GetSHA1Hash(ByVal Txt As String) As String
Dim sha как новый SHA1Managed()
Dim ae как новое ASCIIEncoding()
Dim Hash() As Byte = sha.ComputeHash(ae.GetBytes(Txt))
Dim sb как новый StringBuilder(Hash.Длина * 2)
Dim ndx как целое число
Для ndx = 0 для хэширования.Длина - 1
СБ.Вставляем(хеш(NDX по).ToString("X2"))
Следующий
Возвращение СБ.Метод toString
Конечная Функция

Private Sub BtnProcess_Click(отправитель как система.Объект, как система.EventArgs) Обрабатывает BtnProcess.Щелчок
Если NUMSaltMin.Value >= NUMSaltMax.Value, то
TXTSalt.Text = "минимум должен быть по крайней мере равен или больше максимума"
Выход Из Субмарины
Конец, Если
TXTSalt.Text = CreateSalt(CInt(NUMSaltMin.Value), CInt(NUMSaltMax.Value))
Txthash.Text = GetSHA1Hash(TXTSalt.Text & txtPassword.Text)
Конец Подводной Лодки
End Класса

Richard Deeming

Да, что-то вроде этого.