posthorn Geschrieben 4. März 2009 Geschrieben 4. März 2009 Hallo ich arbeite mich gerade in .net c++ ein und bin in meinem buch über einen kurzen Hinweis der System.Security.Cryptography gestossen und finde diese klasse sehr interresant nun versuche ich diese klasse anzuwenden genauer gesagt die sha512 managedklasse und dafür muß ich nun mein string in ein byte array umwandeln jedoch steht leider in meinem schlauen buch nichts dadrüber wie ich das machen kann. könnte mir jemand bitte weiterhelfen ?? danke (link zur klasse HashAlgorithm.ComputeHash-Methode (System.Security.Cryptography) ) Zitieren
posthorn Geschrieben 4. März 2009 Autor Geschrieben 4. März 2009 (bearbeitet) da ich irgendwie den oberen beitrag nicht editieren kann muß ich leider einen Post darunter setzen. das Umwandeln in ein Byte array habe ich jetzt doch hinbekommen allerdings macht mir das zurückwandeln Probleme ich bekomme immer nur raus das es sich um ein "System::Byte[]" handelt. dieses wandele ich mit "wandelbuffer=(gcnew UnicodeEncoding)->GetString(inArray);" wieder zurück. nur werden mir dann nur japanische Schriftzeichen angezeigt. Wie kann ich denn daraus wieder einen ganz normalen Text machen das meinetwegen aus "test" -> "i3j4r3h2uuhfd32irh4329rfw98h34r7" wird ?? kann mir evtl jemand weiterhelfen ?? SHA512^ shaM = gcnew SHA512Managed; array<Byte> ^inArray = (gcnew UnicodeEncoding)->GetBytes(textBox1->Text); String ^wandelbuffer; wandelbuffer=textBox1->Text; label1->Text=wandelbuffer; inArray=shaM->ComputeHash(inArray); wandelbuffer=System::Convert::ToString(inArray); label1->Text=wandelbuffer; Bearbeitet 4. März 2009 von posthorn Zitieren
Klotzkopp Geschrieben 4. März 2009 Geschrieben 4. März 2009 Wie kann ich denn daraus wieder einen ganz normalen Text machen das meinetwegen aus "test" -> "i3j4r3h2uuhfd32irh4329rfw98h34r7" wird ??Warum willst du das als Text haben? Ein Bytearray ist kein Text. Es gibt gewissen Vorschriften, wie man Bytefolgen als Text interpretieren kann, das sind dann Zeichencodierungen. Welcher Text dabei herauskommt, kommt auf die gewählte Codierung an. Was bei Unicode herauskommt, hast du ja gesehen. Andere Codierungen, wie z.B. UTF8, sind möglicherweise für dein Bytearray gar nicht gültig, weil die Bytefolge gewisse Regeln erfüllen muss. Wenn du sichergehen willst, dass dabei nur druckbare ASCII-Zeichen herauskommen, könntest du Base64 benutzen. Zitieren
posthorn Geschrieben 4. März 2009 Autor Geschrieben 4. März 2009 ok danke für die antwort habs jetzt auch mit "Convert::ToBase64String(inArray);" gelöst. ist das eigentlich normal das die letzten beiden Stellen immer "==" sind ?? Zitieren
Klotzkopp Geschrieben 4. März 2009 Geschrieben 4. März 2009 ist das eigentlich normal das die letzten beiden Stellen immer "==" sind ??Das kommt auf die Länge der Daten an. Bei Base64 werden 3 Bytes in genau 4 Zeichen codiert. Jedes Zeichen trägt 6 Bit Information. Wenn die Anzahl der Bytes nicht durch drei teilbar ist, wird mit Nullbits aufgefüllt. Zeichen, die nur diese Füllbits repräsentieren, werden als = dargestellt, um sie von Daten-Nullbits unterscheiden zu können. Ein Base64-String kann auf 0, 1 oder 2 Gleichheitszeichen enden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.