SecureString хешировать MD5

390
26 мая 2017, 11:06

Есть метод который принимает пароль и возвращает его уже захешированным в 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 ?

Answer 1

Переводите в обычную строку

public static string convertToUNSecureString(SecureString secstrPassword)
{
    IntPtr unmanagedString = IntPtr.Zero;
    try
    {
        unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(secstrPassword);
        return Marshal.PtrToStringUni(unmanagedString);
    }
    finally
    {
        Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString);
    }
}

А потом считаете хэш, но если у вас исходно есть обычная строка, то лучше вычислить с начала хэш, а потом конвертировать в SecureString.

READ ALSO
как создать запрос where с двумя условиями?

как создать запрос where с двумя условиями?

есть 3 столба: 1-id 2-валюта, 3-значениекак сделать запрос, чтобы из таблицы вытащить сразу данные

349
Как вывести данные из базы данных?

Как вывести данные из базы данных?

Никак не получается вывести текст из базы данных на страницу, сижу уже часов 6 не получаетсяС подключением БД все нормально

436
Как сделать такую выборку sql?

Как сделать такую выборку sql?

Делаю афишу(модуль dle 113) для сайта надо сделать выборку Есть таблица с полем(диапазон дат формата Y-m-d) xfields по которому надо сделать выборку,...

383
Класс Connection. Класс Query. PHP

Класс Connection. Класс Query. PHP

Есть два класса Первый

418