Я проводил некоторые исследования по созданию класса шифрования / дешифрования для использования в приложении .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