我一直在对创建用于 .NET 应用程序的加密/解密类进行一些研究。我一次又一次地读到除了密码之外还需要一个盐。今天我遇到了一种只使用一个密码的加密/解密方法。此代码使用的加密方法是否有问题,因为它似乎没有使用盐?
Public Shared Function EncryptString(ByRef input As String, ByRef password As String) As String
Dim RijndaelManagedObject As New RijndaelManaged
Dim crypto As ICryptoTransform, MD5Obj As New MD5CryptoServiceProvider
Dim EncryptedBytes As Byte()
Dim HashedBytes As Byte() = New ASCIIEncoding().GetBytes(password)
Dim PlainTextBytes As Byte() = New ASCIIEncoding().GetBytes(input)
RijndaelManagedObject.BlockSize = 128
RijndaelManagedObject.KeySize = 128
RijndaelManagedObject.Mode = CipherMode.ECB
RijndaelManagedObject.Padding = PaddingMode.Zeros
RijndaelManagedObject.Key = MD5Obj.ComputeHash(HashedBytes)
crypto = RijndaelManagedObject.CreateEncryptor()
EncryptedBytes = crypto.TransformFinalBlock(PlainTextBytes, 0, PlainTextBytes.Length)
If EncryptedBytes.Length > 0 Then
Return Convert.ToBase64String(EncryptedBytes)
Else
Return String.Empty()
End If
End Function