Безопасное получение хэша пароля, заданного через указатель из SecureString - C#

Узнай цену своей работы

Формулировка задачи:

Итак в продолжение темы "Как работать с SecureString?" вопрос следующий: как рассчитать md5-хэш из указателя IntPtr или обычного unsafe указателя? (получим из SecureString) Я использую класс MD5 для расчета хэша. Собственно вариантов два: попробовать как то скормить ему указатель (я пока не нашел методом принимающих указатели) или же найти какую то другую библиотеку которая умеет считать хэши. Подскажите пожалуйста. (А то меня

Rius

достал уже! )
P.S. гугл по запросу "c# md5 hash from pointer" ничего внятного ответить не смог.

Решение задачи: «Безопасное получение хэша пароля, заданного через указатель из SecureString»

textual
Листинг программы
IntPtr passwordPointer = Marshal.SecureStringToGlobalAllocUnicode(password);
            StringBuilder hashBuilder = new StringBuilder(256);
            string hashString = String.Empty;
 
            try
            {
                if (Hasher.DB_CalculateHash(passwordPointer, password.Length, hashBuilder, hashBuilder.Capacity))
                {
                    hashString = hashBuilder.ToString();
                }
                else
                {
                    throw new Win32Exception(Marshal.GetLastWin32Error());
                }
            }
            finally
            {
                Marshal.ZeroFreeGlobalAllocUnicode(passwordPointer);
            }
 
            this.HashedPassword = hashString;

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы