我有 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 时做错了,但我找不到解决方案。