Я хотел бы использовать переменную SecureString в VB.NET и преобразовать ее в хэш SHA1 или SHA512. Как мне безопасно преобразовать SecureString в массив Byte, который примет HashAlgorithm.ComputeHash?
Как использовать SecureString для создания хэша SHA1 или SHA512?
Ответы (1)
Что насчет того, если мы избежим единственного используемого экземпляра String (вывод) и заменим его массивом символов. Это позволит нам стереть этот массив после использования:
public static String SecureStringToMD5( SecureString password )
{
int passwordLength = password.Length;
char[] passwordChars = new char[passwordLength];
// Copy the password from SecureString to our char array
IntPtr passwortPointer = Marshal.SecureStringToBSTR( password );
Marshal.Copy( passwortPointer, passwordChars, 0, passwordLength );
Marshal.ZeroFreeBSTR( passwortPointer );
// Hash the char array
MD5 md5Hasher = MD5.Create();
byte[] hashedPasswordBytes = md5Hasher.ComputeHash( Encoding.Default.GetBytes( passwordChars ) );
// Wipe the character array from memory
for (int i = 0; i < passwordChars.Length; i++)
{
passwordChars[i] = '\0';
}
// Your implementation of representing the hash in a readable manner
String hashString = ConvertToHexString( hashedPasswordBytes );
// Return the result
return hashString;
}
Я что-то пропустил?
person
Seven
schedule
25.11.2010
Да - см. ответ на этот вопрос: stackoverflow.com/ вопросы/14293344/
- person RobSiklos; 22.01.2013