У меня есть 2 веб-сайта: один написан на классическом asp, а другой - на ASP.NET (инфраструктура 1.1). Оба приложения используют механизм входа в систему для проверки учетных данных пользователя на основе общей таблицы базы данных. До сих пор пароли хранятся в одностороннем хеш-коде MD5, что означает, что людям должен быть предоставлен новый сгенерированный пароль, если они потеряют старый. Теперь я хочу изменить это и сделать пароли дешифруемыми.
Я нашел этот код Rijndael для использования с классическим asp: http://www.frez.co.uk/freecode.htm#rijndael.
Но я не могу найти такое же решение для ASP.NET. Я пробовал это, но это дает мне разные результаты шифрования и дешифрования между классическим кодом asp и кодом ASP.NET:
If Not String.IsNullOrEmpty(TextBox1.Text) And Not String.IsNullOrEmpty(TextBox2.Text) Then
Dim password = TextBox1.Text
Dim key = TextBox2.Text
Dim keyGenerator = New Rfc2898DeriveBytes(key, 8)
Dim r = New RijndaelManaged
r.Mode = CipherMode.CBC
r.Padding = PaddingMode.Zeros
r.BlockSize = 256
r.KeySize = 256
r.FeedbackSize = 256
r.IV = keyGenerator.GetBytes(CType(r.BlockSize / 8, Integer))
r.Key = keyGenerator.GetBytes(CType(r.KeySize / 8, Integer))
Dim transform As ICryptoTransform = r.CreateEncryptor()
Dim encoded As Byte() = Encoding.ASCII.GetBytes(password)
Dim target As Byte() = transform.TransformFinalBlock(encoded, 0, encoded.Length)
TextBox3.Text = Encoding.ASCII.GetString(target)
End If
Я думаю, что делаю что-то не так с генерацией ключа или iv, но не могу найти решения.
RijndaelManaged
без вектора инициализации (IV), я думаю, это может очень помочь. - person MaxiWheat   schedule 25.04.2012