Dans une application WinForm utilisant C# .NET 2.0 (sur Vista), j'utilise le hachage SHA1 pour créer un hachage à partir d'une chaîne et stocker le hachage dans un fichier texte (avec codage UTF-8)). Je veux utiliser le hash stocké dans le fichier texte dans un état. Lorsque je lance le projet sous Vista, cela fonctionne correctement (c'est-à-dire que la condition est vraie), mais quand je cours sous XP, le projet ne fonctionne pas.SHA1 hash différent sous Vista et XP
Est-ce que le hash créé sous Vista est différent de XP?
code extrait
byte[] HashValue;
byte[] MessageBytes = Encoding.UTF8.GetBytes(strPlain);
SHA1Managed SHhash = new SHA1Managed();
StringBuilder strHex = new StringBuilder("");
HashValue = SHhash.ComputeHash(MessageBytes);
foreach (byte b in HashValue)
{
strHex.AppendFormat("{0:x2}", b);
}
// storing strHex in a text file with UTF-8 encoding
test état
string newHash = Program.GetHash("This will be hashed.");
// GetHash() does has the same code as above, but instead of storing hash in file in return
// hash.
bool validHash = newHash.Equals(oldHash);
// old has is the one stored in file
if (validHash)
{
// some code
}
[Modifier]
Le principal problème est le même code fonctionne très bien dans Vista, mais tombe en panne dans XP. S'il y a un problème logique il ne devrait pas fonctionner dans n'importe quel système d'exploitation.
Merci.
Pouvez-vous poster le code que vous utilisez? –
Pouvez-vous également publier le code qui implémente la "condition" à laquelle vous faites référence dans votre question? Aussi, avez-vous vérifié que 'MessageBytes' est le même pour la même valeur d'entrée' strPlain' sur chaque plate-forme? –
Merci. Oui, la valeur strPlain est la même. J'utilise une phrase simple "Cela va être haché". Regards – kobra