hashcode per CryptDeriveKey maschinenabhängig?

23/01/2009 - 13:57 von Michael Meier | Report spam
hallo,

ich schreibe an einem programm (c#), daß bestimmte funktionen nur nach
einer passworteingabe freischaltet. es ist nicht unbedingt
hochsicherheitssoftware, aber ich möchte auch nicht unbedingt, daß man das
vergleichspasswort durch dekompilieren und scharfes hinsehen findet.
darum dachte ich mir, ich lege das richtige passwort gehasht ab, hashe die
benutzereingabe und vergleiche beides miteinander.

den hashcode ermittel ich so:
protected byte[] getHashedBytes(string strPWClearText) {

// Create a PasswordDeriveBytes object and then create
// a TripleDES key from the password and salt.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(strPWClearText, new
byte[] { });


// Create the key and set it to the Key property
// of the TripleDESCryptoServiceProvider object.
TripleDESCryptoServiceProvider tdes = new
TripleDESCryptoServiceProvider();
return pdb.CryptDeriveKey("TripleDES", "SHA1", 192, tdes.IV);

}

bis jett funktionierte diese methode auf mehreren rechnern prima, nur
heute hab ich festgestellt, daß beim 4. rechner die methode ein anderes
byte[] zurückliefert, als ich erwartet hab.
funktionieren tut die ganze sachen bei 3 rechnern, die alle unter xp oder
vista laufen, alle mit .net-framework 2.x oder 3.x

der rechner, bei dem es nicht funktioniert làuft unter win2k.

geb zu, nicht so der crypto-experte zu sein, halte also auch durchaus
einen fehler im grundsàtzlichen ansatz für möglich, steh aber grad ein
bissel auf dem schlauch, woran es denn nun genau hàngt bzw. wie ich nun
möglichst einfach meinen pw-vergleich hinbekomme.



micha
 

Lesen sie die antworten

#1 Alexander Reifinger
23/01/2009 - 14:06 | Warnen spam
Michael Meier schrieb:

bis jett funktionierte diese methode auf mehreren rechnern prima, nur
heute hab ich festgestellt, daß beim 4. rechner die methode ein anderes
byte[] zurückliefert, als ich erwartet hab.
funktionieren tut die ganze sachen bei 3 rechnern, die alle unter xp
oder vista laufen, alle mit .net-framework 2.x oder 3.x

der rechner, bei dem es nicht funktioniert làuft unter win2k.



Mit welcher Methode wandelst Du den String in das byte[]? Gibst Du ein
Encoding fest an? Ich vermute dass Du das nicht tust und der vierte
Rechner ein anderes Default-Encoding hat.

Servus,
Alexander Reifinger

Ähnliche fragen