MD5 ?
-
Was ist an dieser Funktion falsch?
Wenn ich die mit einem String als Parameter aufrufe, bekomme ich nur unleserlichen Müll zurückstring md5hash (string data) { MD5CryptoServiceProvider md5crypter = new MD5CryptoServiceProvider(); byte[] result = md5crypter.ComputeHash(System.Text.Encoding.ASCII.GetBytes(data)); string result2 = System.Text.Encoding.ASCII.GetString(result); return result2; }
-
was du zurückbekommst, ist ein array aus (unsigned) bytes! wandle jedes byte in seinen zweistelligen hexandezimal-wert um, und du bekommst das, was man gemeinhin als md5 kennt.
ich habe das so gelöst:string getMd5(string text) { UTF8Encoding ue = new UTF8Encoding(); byte[] md5ByteArr = new byte[16]; StringBuilder md5String = new StringBuilder("", 32); MD5 md5 = new MD5CryptoServiceProvider(); // der übergebene String ist Unicode -> Umwandeln in ein 8-bit byte-Array // und direkt in den MD5 umwandeln // dieser Code erzeugt leider Minuszeichen zwischen den einzelnen Bytes: //return BitConverter.ToString(md5.ComputeHash(ue.GetBytes(text))); md5ByteArr = md5.ComputeHash(ue.GetBytes(text)); // geht das nicht einfacher??? foreach (byte einByte in md5ByteArr) { md5String.Append(String.Format("{0:x2}", einByte)); } return md5String.ToString(); }
[ mfg: marc-a.prowe ]
[ http://www.virtuelle-maschine.de ]
-
thx, konnte ich gut gebrauchen
ich hab mir die funktion direkt in eine dll gepackt, damit ich die nicht in jedes file schreiben muss
#include gibt es ja leider in c# nicht
-
Original erstellt von ThiefMaster:
#include gibt es ja leider in c# nichtNICHT????
Also, soweit wie ich das verstanden habe braucht man kein #include. Verbessert mich wenn ich Mist labere aber ich glaube man muss nur oben in der Datei angeben welche namespaces man verwendet (mit using) so dass die includes redundant werden... (Hab mich aber auch erst kurz mit C#-Projekten auseinander gesetzt)
[ Dieser Beitrag wurde am 28.01.2003 um 08:04 Uhr von MaSTaH editiert. ]