Je voudrais utiliser une variable SecureString dans VB.NET et la convertir en hachage SHA1 ou SHA512. Comment convertir en toute sécurité le SecureString au tableau Byte que HashAlgorithm.ComputeHash acceptera?Comment utiliser un SecureString pour créer un hachage SHA1 ou SHA512?
Répondre
A tapé en C# et converti en VB. J'espère que cela fonctionne toujours!
Dim input As [Char]() = "Super Secret String".ToCharArray()
Dim secret As New SecureString()
For idx As Integer = 0 To input.Length - 1
secret.AppendChar(input(idx))
Next
SecurePassword.MakeReadOnly()
Dim pBStr As IntPtr = Marshal.SecureStringToBSTR(secret)
Dim output As String = Marshal.PtrToStringBSTR(pBStr)
Marshal.FreeBSTR(pBStr)
Dim sha As SHA512 = New SHA512Managed()
Dim result As Byte() = sha.ComputeHash(Encoding.UTF8.GetBytes(output))
modifier:
Comme il a été souligné par moi-même et quelques autres dans les commentaires, je veux porter cette question à l'attention ici. Faire ceci n'est pas une bonne idée. Vous déplacez les octets vers un endroit qui n'est plus sécurisé. Bien sûr, vous pouvez le faire, mais vous ne devriez probablement pas
Et à propos de ça, si nous évitons la seule occurrence de String utilisée (sortie) et la remplaçons par un tableau de caractères. Cela nous permettrait d'effacer ce tableau après utilisation:
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;
}
Y at-il quelque chose que j'ai raté?
Oui - voir la réponse à cette question: http://stackoverflow.com/questions/14293344/hashing-a-securestring-in-net – RobSiklos
- 1. Comment créer un hachage SHA1 dans ruby?
- 2. Comment puis-je reproduire un hachage SHA512 en C# correspondant au PHP SHA512?
- 3. Comment .net crée-t-il un hachage SHA1?
- 4. Comment initialiser SecureString pour readonly
- 5. Les 32 premiers bits d'un hachage SHA1 de 160 bits sont-ils un substitut acceptable pour un hachage CRC32?
- 6. Un Regex pour correspondre à un SHA1
- 7. Meilleure pratique: dois-je utiliser un modèle AR ou un hachage global pour les données statiques?
- 8. Comment puis-je créer un hachage de hachages en Perl?
- 9. Créer une méthode ruby qui accepte un hachage de paramètres
- 10. SecureString est-il sécurisé?
- 11. Comment utiliser genshi.builder pour créer par programme un document HTML?
- 12. Python - Comment utiliser Conch pour créer un serveur virtuel SSH
- 13. Comment utiliser Microsoft.Build.BuildEngine pour créer un projet Silverlight?
- 14. iPhone SHA1 incompatible
- 15. Comment créer un sol pour un jeu?
- 16. Comment utiliser opengl pour créer un effet de cylindre
- 17. Comment utiliser svcutil.exe pour créer un proxy client ib WCF?
- 18. Comment utiliser GWT pour créer un panneau de défilement infini?
- 19. Comment créer un organigramme? Javascript ou Flash?
- 20. Comment utiliser un commutateur 'ou' en PHP?
- 21. Créer un hachage à partir de string et int
- 22. SQL SHA1 inside OERE
- 23. Comment créer un bookmarklet pour créer un grattage d'écran?
- 24. Comment créer un badge ou un widget javascript?
- 25. Comment stocker un tableau 2d dans un hachage en Perl?
- 26. Stocker un tableau ou un hachage de booléens dans Ruby and Rails
- 27. Comment puis-je utiliser un tableau existant comme valeur dans un hachage en Perl?
- 28. Comment utiliser 'System.Security.Cryptography.AesManaged' pour chiffrer un octet []?
- 29. Créer un jeu web, quelle technologie utiliser?
- 30. Comment échapper un hachage (#) en python?
Pourquoi l'avez-vous converti? L'avez-vous en C#? – backslash17
Je l'ai converti parce que Luke l'a demandé sur VB.net. Si vous en avez besoin dans C# essayez de le faire tourner à travers ce convertisseur http://www.developerfusion.com/tools/convert/vb-to-csharp/ – Joe
Merci Joe! – Luke