Есть метод который принимает пароль и возвращает его уже захешированным в MD5. Поначалу я использовал не SecureString а просто string в которую записывал Password взятый из контролла и проблем не было. Сейчас прочел что при таком подходе строка храниться в памяти процессора, поэтому рекомендуется использовать SecurePassword и передавать на сервер так. Собственно теперь из за этого возникает ошибка :
Ошибка CS1503 Аргумент 1: не удается преобразовать из "SecureString" в "char[]".
internal static string GetHash(System.Security.SecureString passHASH) //тут
{
MD5 md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(passHASH));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
}
Можно конечно написать так
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(passHASH.ToString()));
Но не пофиксит ли это использование SecureString ?
Переводите в обычную строку
public static string convertToUNSecureString(SecureString secstrPassword)
{
IntPtr unmanagedString = IntPtr.Zero;
try
{
unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(secstrPassword);
return Marshal.PtrToStringUni(unmanagedString);
}
finally
{
Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString);
}
}
А потом считаете хэш, но если у вас исходно есть обычная строка, то лучше вычислить с начала хэш, а потом конвертировать в SecureString.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости