Laden...
J
Jack_AI myCSharp.de - Member
Selbständiger Programmierer Erlangen Dabei seit 03.06.2007 193 Beiträge
Benutzerbeschreibung

Forenbeiträge von Jack_AI Ingesamt 193 Beiträge

09.08.2008 - 18:26 Uhr

Hallo herbivore.

Na schön. Danke für deine wertvolle Kritik. Ich sehe schon, die Zielgruppe für meinen Code-Fetzen war wohl allzu speziell. Ansonsten ist weiteres Feedback weiterhin gerne willkommen.

Grüße,
Jack

09.08.2008 - 17:33 Uhr

Beschreibung:

Eine Liste mit Instanzen soll anhand eines bestimmten Attributs absteigend sortiert werden, ohne dass ein Interface benötigt verwendet werden soll.


    public static List<Klasse> OrderElementsByValue(List<Klasse> ElementListe)
    {
      List<Klasse> ElementListeSortiert = new List<Klasse>();

      // Merkwerte
      int HoechsterWert = -1; // höchster Wert (Annahme: gültige Werte >= 0)
      int IndexVonElement = -1; // Index des Elements mit höchstem gefundenen Wert

      while (ElementListe.Count > 0)
      {
        // Elemente werden der Reihe nach durchgegangen
        for (int i = 0; i < ElementListe.Count; i++)
        {
          // Wert des Element im aktuellen Schleifendurchlauf > Merkwert
          if (ElementListe[i].GetWert > HoechsterWert)
          {
            // Merkwerte bekommen Werte des aktuell höchstwertigen Elements
            HoechsterWert = ElementListe[i].GetWert;
            IndexVonElement = i;
          }
        }

        if (IndexVonElement != -1)
        {
          // das Element mit dem höchsten gefundenen Wert wird eingetragen
          ElementListeSortiert.Add(ElementListe[IndexVonElement]);

          // Element wird aus Liste entfernt
          ElementListe.RemoveAt(IndexVonElement);

          // Merkwerte werden für nächsten Schleifendurchlauf zurückgesetzt
          HoechsterWert = -1;
          IndexVonElement = -1;
        }
      }

      // ElementListeSortiert.Reverse(); // entkommentieren, falls aufsteigend sortiert werden soll
      return ElementListeSortiert;
    }

Hinweis: Keine Garantie auf Fehlerfreiheit. Feedback gerne willkommen. Die Methode ist in erster Linie für Leute/Anfänger wie mich gedacht, denen der Umgang mit Interfaces unwillkommen und/oder nicht geläufig und/oder nicht möglich ist. Wenn eine solche Funktion hier im Forum schon beschrieben ist oder es dafür eine fertige Funktion in C# gibt, möge man mir das verzeihen und mich freundlich darauf hinweisen. Danke.

Todo: Irgendwas machen, damit die Elemente aus der Liste nicht gelöscht werden. Ich lasse mir etwas einfallen. Alternativ einfach eine Kopie der Liste erzeugen.

edit: Umbenennung <Klassenname> -> <Klasse>

Schlagwörter: Liste Instanzen List sortieren Interface sort

05.08.2008 - 23:19 Uhr

Hallo noch mal,

ich habe es wohl inzwischen selbst gelöst. Offenbar habe ich den Sinn des Parameters SourceRectangle falsch verstanden. Deshalb wurde ein Bereich außerhalb der Textur angezeigt, der zufälligerweise grau ist.

Trotzdem Danke,
Jack

05.08.2008 - 01:48 Uhr

Hallo.

Problem: Wenn ich ein Sprite mit Draw() zeichnen möchte, und dabei den Parameter für sourceRectangle definiere (also nicht auf null setze), wird die Textur wird plötzlich grau. Das Sprite an sich wird aber richtig skaliert. Woran liegt das?

Hier die Draw-Methode, die in meiner Objekt-Klasse aufgerufen wird:


// Position ist vom Typ Rectangle
// Durch sourceRectangle (3. Parameter) soll das Objekt auf halbe Größe skaliert werden

spriteBatch.Draw(Textur, new Vector2(Position.X, Position.Y), new Rectangle(Position.X, Position.Y, Position.Width / 2, Position.Height / 2), Color.White, Rotation, Center, 1.0f, SpriteEffects.None, 0.5f);

Danke schon mal im Voraus,
Jack

Edit: Ich habe das Problem wohl gefunden. Wenn ich es gelöst habe, werde ich die Lösung hier posten.

20.07.2008 - 13:19 Uhr

Auch noch mal alles Gute nachträglich. 🙂

13.07.2008 - 00:56 Uhr

Hallo.

Mir ist gerade etwas interessantes aufgefallen. Vor knapp einem Jahr habe ich mich zum ersten Mal mit WPF beschäftigt und habe damals in diesen Thread geschrieben:

[...]Tutorials gibt es wirklich kaum welche. Bisher habe ich selbst nach längerem Suchen keine umfangreicheren Tutorials gefunden, sondern meist nur spezielle Artikel.

Ich frage mich, warum WPF bisher so unpopulär ist und es kaum Tutorials gibt. Bis zur Veröffentlichung von VS 2008 dauert es ja leider noch recht lange. Hoffentlich ändert sich dann was an der Situation.

Ich habe heute noch mal nach Tutorials zu WPF gesucht. Erstaunlicherweise habe ich nur diesselben Tutorial von vor einem Jahr gefunden. Symptomatisch ist dabei der Satz einer Website: "Thema der Woche: ... und los geht's mit dem neuen WPF-Tutorial - März 2007". Viele Websites sprechen sogar noch von "Avalon". Auch scheint es nicht viele Bücher zu WPF zu geben. Das aktuellste (von denen, die mir aufgefallen sind) ist ein halbes Jahr alt.

All das sind deutliche Indizien für mich, dass WPF nicht sehr populär ist. Daher räume ich WPF keine große Zukunft (mehr) ein.

Grüße,
Jack

30.06.2008 - 19:42 Uhr

Der Umstieg auf WPF ist leider sehr schwer und WPF ist mir (noch?) ein paar Nummern zu hoch. Darum werde ich wohl auf Controls mit transparentem Hintergrund verzichten müssen. Ich kann nur hoffen, dass diese Performance-Probleme im Zuge eines .NET-Updates behoben werden (sehr unwahrscheinlich).

Ansonsten Danke für eure Hilfe. Vielleicht tue ich mir irgendwann noch mal WPF an.

Jack

29.06.2008 - 20:29 Uhr

Es ist wohl nur fair, euch über meinen aktuellen Status zu unterrichten.

kleines_eichhoernchen hat mich auf die Idee gebracht, das Projekt für WPF umzugestalten. Nun versuche ich herauszufinden, wie ich das möglichst einfach und schmerzfrei machen kann. Bei näherer Betrachtung wäre WPF so oder so besser geeignet. Momentan fehlt mich jedoch die Motivation, das Projekt auf WPF umzustellen, zumal ich mir dafür mehr Wissen über WPF aneignen müsste.

Wenn das Projekt Fortschritt macht, melde ich mich wieder.

Jack

23.06.2008 - 23:39 Uhr

Hallo zusammen,

ich konnte das Problem weiter eingrenzen. Offenbar liegen die Performance-Probleme nicht an den Grafiken, sondern an der Transparenz-Eigenschaft der Labels selbst. Standardgemäß hat ein Label eine bestimmte Hintergrundfarbe. Wenn man diese jedoch auf transparent stellt, bekommt man jene Performance-Einbrüche.

In diesem Thread wird dasselbe Problem beschrieben, und auch hier scheint es an der Transparenz der Controls zu liegen. Leider konnte das Problem dort nicht gelöst werden.

22.06.2008 - 23:34 Uhr

Geht das denn, dass man nachträglich DirectX in eine Forms-Anwendung integriert?

22.06.2008 - 21:58 Uhr

Die Verzögerung beim Starten ist nicht so schlimm. Aber dass die Bilder so langsam laden, nachdem man das minimierte Fenster wieder aufruft... Das möchte ich vermeiden.

22.06.2008 - 21:41 Uhr

Ich habe mal testweise das halbtransparente PNG-Bild durch ein einfaches, 10x10 Pixel-großes BMP- / JPG-Bild ersetzt. Es dauert genauso lange: ca. 1 Sekunde bei 20 Bildern, unabhängig von Format, Transparenz und Größe.

22.06.2008 - 21:02 Uhr

8 Bit hat keinen Transparenzkanal.

Du hast recht. Ich habe noch mal nachgeschaut. Es hat 32 Bit.

Wie sieht es bei einem 2. Aufruf der Form aus?(lange Kompilierungszeit am Start)?
Wie hoch ist die Anzahl(ungefähr)?

Die Kompilierung dauert genau so lange wie sonst auch. Nur das erste Laden ist durch die Bilder verlängert. Das merkt man daran, dass die Bilder nacheinander in die Form "eingesetzt" werden, also es schaut so aus, als ob die Bilder nacheinander aufploppen. Ansonsten merkt man es besonders beim Minimieren und Wiederherstellen des Fensters. Ich verwende momentan ca. 20 Labels + Bilder, es sollen aber später noch mehr werden.

22.06.2008 - 20:36 Uhr

Ein 32-Bit-PNG also?

Nein, 8 Bit. Nur Graustufen.

22.06.2008 - 20:08 Uhr

Weiterhin frage ich mich wie du die Halbtransparenz herstellst, da es eine direkte Unterstützung nicht gibt(es sei denn WPF != WinForms).

Also noch mal zur Erklärung: Der Form-Designer erlaubt mir für Labels per Eigenschaft "Image" ein Hintergrundbild für den Text zu wählen. Dafür nehme ich ein halbtransparentes PNG-Bild. Die Transparenz-Eigenschaft wird in dieser Bilddatei gespeichert.

Und davon habe ich eben sehr viele, sodass das Fenster recht lange zum Aufbauen braucht.

22.06.2008 - 19:15 Uhr

Was soll in einem Label oder Picturebox oder egal was für'n WinFormDing die (Halb)Transparenz bewirken?

Damit hebt sich die Schrift besser von einem heterogenen Hintergrund ab.

22.06.2008 - 17:41 Uhr

Hallo Community,

ich habe in meiner Windows-Form mehrere Textstücke / Labels (momentan 20 Stück), die ich gerne mit einem halbtransparenten PNG-Bild unterlegen möchte.

Das Bild selber ist nicht groß (100 x 32 Pixel, ca. 1 kb). Jedoch dauert eine ganze Weile (1 - 2 Sekunden), bis alle Bilder geladen werden. Selbst wenn ich das Fenster nur minimiere und wieder hervor hole.

Ich habe die Bilder alle per Form-Designer als Recourse geladen. Was kann ich tun, damit sich die Bilder schneller aufbauen?

Grüße,
Jack

07.06.2008 - 16:02 Uhr

Danke für den Link.

Es liegt also am Null-Byte. Gibt es eine Möglichkeit ein solches Null-Byte zu entfernen? Mit trim() funktioniert es nicht.

Jack

07.06.2008 - 14:59 Uhr

Hallo Community,

derzeit stoße ich auf ein Phänomen, das ich mir nicht erklären kann: Bestimmte Strings, wenn ich sie ausgeben lasse, "verschlucken" nachfolgende Zeichen. Wenn ich zum Beispiel diesen Code ausführe,

MessageBox.Show("" + EinString + "");

wird nur "***Foobar" (ohne nachfolgende Sternchen) ausgegeben. Ich vermute, das hat eventuell etwas mit Arrays und Trennzeichen zu tun. Vielleicht weiß hier jemand genauer, wodurch das verursacht wird.

Grüße,
Jack

24.05.2008 - 11:55 Uhr

Am besten du machst die Liste selbst private, und greift darauf über eine public-Methode zu, die den Wert ausgibt / ändert.

24.05.2008 - 06:57 Uhr

Da "befehl" vom Typ String ist, solltest du besser mit befehl.Equals() den Wert prüfen, anstatt mit ==.

19.05.2008 - 02:32 Uhr

Danke für deinen umfassenden Kommentar und deine Bedenken, Jules Papillon.

Ich werde später, wenn mein Sicherheitskonzept umgesetzt ist, es in einem neuen Thread umfangsreich präsentieren.

Grüße,
Jack

17.05.2008 - 16:19 Uhr

Noch ein paar weitere Informationen (falls noch nicht bekannt):

Lasst euch davon nicht abhalten, weiterhin unsere Stadt zu besuchen. Es gibt noch einiges zu entdecken. 😉

Jack

17.05.2008 - 15:59 Uhr

Von mir auch Glückwunsch und Danke für die vielen, vielen hilfreichen Posts.

Jack

17.05.2008 - 11:33 Uhr

Du urteilst also über Leute nach einer Szene und kannst diese ( auch mich ) nicht mehr ernst nehmen. hehe ... nice Einstellung, kann es nicht sein das du dich dadurch selbst etwas diskreditierst ...

Oha, da hat jemand die Schwachstelle in meinem Beitrag entdeckt.

Ich hatte schon damit gerechnet, dass jemand früher oder später diesen Schwachpunkt erkennen und gnadenlos gegen mich richten wird.

Aber Spaß beiseite. Dein Beitrag zeigt schon, warum ich das nicht kann.

Einigen wir uns darauf, dass man über den Film sehr kontrovers diskutieren kann und dass es Meinungen dazu auf beiden Extremen gibt. Damit ist alles gesagt, kein Grund also, über den inhaltslosen Schund aus diesem Film weiter zu diskutieren. Bzw. ihr dürft das gerne.

Jack

16.05.2008 - 19:23 Uhr

Hallo Peter Bucher.

Und: Iiiiiik, was ist denn das? PHP? 🙂

Ja. Zu erkennen an der Dateiendung.

Jack

16.05.2008 - 19:01 Uhr

Hallo.

Ich habe etwas interessantes gefunden. Scheint der Quelltext von MyMiniCity zu sein:

Datei-Übersicht
Funktionen

Jack

16.05.2008 - 02:32 Uhr

Hallo.

Mir ist die Sicherheit meiner C#-Programme sehr wichtig.

Nun ist mir eingefallen, dass sich z.B. per Zeigern aus C++ der Arbeitsspeicher auslesen und manipulieren lässt. Deshalb würde ich gerne wissen, wie ich meine Variablen vor Manipulation schützen kann. Hat das etwas mit der Sichtbarkeit (private, public, ...) von Variablen zu tun?

Grüße und Danke im Voraus,
Jack

13.05.2008 - 19:49 Uhr

Ich bin mal durch Zufall auf einen Ausschnitt zu diesem Film auf YouTube gestoßen.

Unter anderem wird dort impliziert, dass frühere Gottheiten, wie Jesus, alle am 24. Dezember geworden sein sollen. Und immer mit dem Hinweis "Recherchiert das doch nach! Ihr werdet schon sehen, das stimmt!".

Sehr zweifelhaft, dass das Geburtsdatum von Gottheiten irgendwie dokumentiert und bis heute erhalten ist. Rein logisch gesehen sollten da bei den Leuten Zweifel aufkommen, ob das stimmen kann. Es ist nicht mal klar, ob Jesus wirklich am 24.12. geboren ist.

Und alles in so einer esoterischen Aufmachung, mit der Botschaft "Wenn du diesen Film schaust, weißt du mehr als andere. Das ist alles die Wahrheit."

Sorry, aber Leute, die sich dazu verführen lassen, an sowas zu glauben, kann ich nicht ernst nehmen.

Meine Kritik anhand einer Szene.

11.05.2008 - 23:01 Uhr

Ich habe es jetzt lösen können. Ich habe mich schweren Herzens von dem komplexen Rijndael von weiter oben getrennt und stattdessen diesen mit ein paar Modifikationen übernommen.

Vielleicht kann mir hier jemand mit einem allgemeineren Problem noch helfen:
Ist Rijndael mit 128 Bits, ohne Salt und ohne weitere Iterationen im CBC-Modus sicher genug, damit verschlüsselter Text vor Hackern ohne spezielle Hardware sicher ist?

Grüße,
Jack

04.05.2008 - 17:38 Uhr

Hallo noch mal,

nach einiger Recherche / Ursachenforschung habe ich entdeckt, dass sich der C#-Rijndael von der PHP-Verschlüsselung insbesondere bei der "Salzung", also dem Hinzufügen eines Salt-Wertes, unterscheidet.

Für den Salt-Wert habe ich zwar dies hier für PHP gefunden:
[php]mhash_keygen_s2k(MHASH_SHA1, $keyClear, $salt, 16);[/php]

Dieser Algorithmus heißt S2K. Der C#-Rijndael benutzt aber einen Salt-Algorithmus aus der Klasse "PasswordDeriveBytes", laut Hilfetext eine Erweiterung des PBKDF1-Algorithmus. Hier scheint in erster Linie das Problem zu liegen. Man muss also einen Salt-Algorithmus finden, der für PHP wie C# gleichermaßen funktioniert. Bisher sieht es so aus, als ob S2K und PBKDF1 nicht für C# wie PHP gleichermaßen vorhanden sind.

Ich habe allerdings noch nicht versucht, C# und PHP mit einem ungesalzenen Passwort miteinander abzugleichen. Das werde ich dann demnächst mal versuchen.

Ansonsten noch ein paar ausstehende Antworten und Ergänzungen:

@m0rius: Dieser Wikipedia-Artikel ist auch ganz interessant. Demnach hat RC6 gar nicht sooo toll abgeschnitten. Ganz zu schweigen davon, dass ich nirgens eine Implementation von RC6 für C# gefunden habe. Also versuche ich es weiterhin mit Rijndael. 😉

@SunboX:
Ich habe den Algorithmus aus deinem letzten Post mal ausprobiert. Merkwürdigerweise habe ich einen anderen Ursprungstext beim Entschlüsseln erhalten. Das war auch bei manch anderen Rijndael-Beispielen für PHP so. Aber vielleicht bin ich auch einfach nur zu doof dafür. ^^

@tscherno:
Danke für die Erklärung! Jetzt habe ich das mit dem IV besser verstanden.

Jack

edit: Mir ist übrigens eingefallen, dass eventuell mein ganzes Konzept einen entscheidenden Fehler hat. Ich will eigentlich Datenbank-Strings in C# verschlüsseln, an PHP senden, um es dort wieder zu entschlüsseln, und dann in eine Datenbank eintragen. Dabei habe ich gar nicht daran gedacht, dass die Verschlüsselung und ihre Parameter im Programm-Code mittels Reflector einsehbar sind. Argh! 🙁

Jack

04.05.2008 - 10:59 Uhr

Hallo m0rius,

na ja, soweit ich weiß wird er zwar als Standard für WLAN (WEP) eingesetzt, allerdings soll sich WEP von Tools wie Aircrack in den meisten Fällen in unter einer Minute knacken lassen.

Kurzes Zitat dazu aus Wikipedia:

[...]some ways of using RC4 can lead to very insecure cryptosystems such as WEP.

und

[...]today a WEP connection can be cracked with readily available software within minutes.

Ich versuche es also weiterhin mit Rijndael, auch wenn ich es noch immer nicht geschafft habe, es mit PHP zu synchronisieren. Leider.

Jack

02.05.2008 - 00:37 Uhr

Kleine Ergänzung:
Ich habe ewig gesucht, warum bei mir ein PHP-MD5 ein anderes Ergebnis bringt, als ein C#-MD5. Ich habe es mit diesem Algorithmus versucht:


    public static string MD5(string Original)
    {
      byte[] textBytes = System.Text.Encoding.Default.GetBytes(Original);

      try
      {
        System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
        cryptHandler = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] hash = cryptHandler.ComputeHash(textBytes);
        string ret = "";
        foreach (byte a in hash)
        {
          if (a < 16)
            ret += "0" + a.ToString("x");
          else
            ret += a.ToString("x");
        }
        return ret;
      }
      catch
      {
        throw;
      }
   }

Der Code funktioniert. Der Fehler lag bei mir schließlich in einem versteckten deutschen Umlaut. Also vorher irgendwie entfernen oder umwandeln. Außerdem besser StringBuilder im Code verwenden.

Jack

29.04.2008 - 19:43 Uhr

@SunboX: Interessanter Code. Danke dafür.

Aber was ich an diesem Code, und auch bei den meisten anderen PHP-Beispielen nicht verstehe ist, wie das mit diesen ganzen Zufallswerten (MCRYPT_RAND, rand()...) funktionieren soll. Schließlich soll die Entschlüsselungsfunktion nicht mit irgendwelchen Zufallswerten rumspielen, sondern meinen Text 1 zu 1 mithilfe meiner Angaben zurückgeben.

Des Weiteren benutzt das Script leider Rijndael im Modus ECB, während mein C#-Rijndael im Modus CBC ist. Ich weiß allerdings nicht, in wie fern sich das genau unterscheidet.

@tscherno: Nein, PHP kennt nicht den Datentyp Byte, geschweige denn das Byte-Array. Ich kann mir vorstellen, dass diese Umkonvertierungen von der Funktion mcrypt_decrypt übernommen werden. Intern basiert PHP ja auf C. Dort sollte es Byte als Datentyp geben.

Jack

29.04.2008 - 18:59 Uhr

@SunboX:

Danke für die Links. Deine Antwort bezog sich bestimmt auf die Problematik mit dem fehlenden mcrypt-Modul. Die beiden Scripte kenne ich schon. Das Problem mit dem Modul habe ich inzwischen gelöst. Aber jetzt habe ich ein neues Problem... (siehe weiter oben)

Jack

29.04.2008 - 18:37 Uhr

Hallo noch mal.

Ich bekomme es nicht hin, einen verschlüsselten String von C# in PHP wieder zu entschlüsseln.

Für die C#-Verschlüsselung habe ich den Rijndael-Algorithmus (128 Bit; CBC) von dieser Seite übernommen.

Mein PHP-Entschlüsselungs-Versuch sieht so aus, doch es wird ein anderer Ursprungstext ausgegeben. Das Beispiel mit der Key-Erzeugung habe ich von hier (PDF).


// Beispielwerte

// $data ist der in C# verschlüsselte String "Das ist ein Test!" mit unten stehenden Angaben
$data = "W1i3cV+UNomxirVKygSywBJStgaT16hoffrCqP5swDo=";
// der Key im Klartext
$keyClear = "Passwort";
// der Salt-Wert
$salt = "Salt" 
// ein 16 Zeichen langer IV
$iv = "16ZeichenLaenge!"; 

// Der Versuch den Key so zu erzeugen, wie es das C#-Beispiel macht
$key = mhash_keygen_s2k(MHASH_SHA1, $keyClear, $salt, 16);

$decryptData = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,$data,MCRYPT_MODE_CBC,$iv);

// Ausgabe
echo base64_encode($decryptData);

Ich hoffe, ihr könnt mir auf die Sprünge helfen, damit mir PHP wieder meinen String "Das ist ein Test!" ausgibt.

Danke!
Jack

edit: Noch ein Hinweis. Mir ist der Thread aus herbivores Post bekannt. Es handelt sich dabei um einen anderen Rijndael-Algoritmus.

28.04.2008 - 20:37 Uhr

Hallo m0rius,

ich habe mich mal bisschen zu RC4 erkundigt. Ich glaube in dem Punkt widersprechen sich die deutsche und die englische Wikipedia, da die englische Wikipedia andeutet, dass RC4 recht unsicher ist... falls ich das richtig verstanden habe.

Ich habe das Problem so gelöst, dass ich meinen Provider davon überzeugt habe, mir das Paket mcrypt zu installieren. Anders geht es wohl leider nicht. Zumindest nicht ohne höhere Kryptographie-Kenntnisse.

Jack

26.04.2008 - 14:05 Uhr

Das Problem an dem Beispiel ist, dass es eben auf mcrypt basiert. Erkennbar an der Zeile:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

Und das habe ich eben nicht.

26.04.2008 - 12:20 Uhr

Hallo.

Ich möchte gerne von einem C#-Programm einen verschlüsselten MySQL-Befehl an ein PHP-Script schicken. Das Script soll denn Befehl dann entschlüsseln und abarbeiten.

Als Verschlüsselungsmethode möchte ich gerne Rijndael/AES benutzen. Jetzt zu dem Problem: Für C# habe ich einen Rijndael-Algorithmus gefunden, der auch wunderbar funktioniert. Aber ich habe kein entsprechendes Gegenstück für PHP, das verschlüsselte String wieder entschlüsseln kann. Es gibt zwar anscheinend soetwas in einem PHP-Paket namen mcrypt, aber das ist auf meinem Webspace nicht installiert.

Daher meine Fragen an euch, wenn ihr dasselbe Problem hattet oder euch damit auskennt:

  • Wie habt ihr das Problem gelöst? 😉
  • Gibt es einen Rijndael-Algorithmus im Modus "CBC" für PHP? (außer in mcrypt)
  • Gibt es eine andere sichere Möglichkeit, von C# Daten zu verschlüsseln und von PHP entschlüsseln zu lassen?

Danke schon mal im Voraus,
Jack

12.04.2008 - 16:03 Uhr

Wer Passwörter etc. als Klartext in einer Anwendung deklariert ist selbst Schuld

Ich weiß bis heute nicht, wie man das bei einer Verbindung zu einer festgelegten Datenbank sonst machen soll...

Der Library Mode ist zwar eigentlich für Libraries gedacht, es spricht jedoch nichts dagegen ihn auch für Programme einzusetzen (wie es der Programmautor im übrigen auch tut).

Kann ich also jetzt mein Datenbankpasswort im Quelltext im Klartext abspeichern? 🙂

Jack

03.04.2008 - 12:03 Uhr

Ist euch auch aufgefallen, dass wir seit einiger Zeit häufiger "Einwohnerschübe" bekommen? Nachdem die anderen Bereiche weit vom optimalen Wert entfernt sind, schließe ich daraus, dass nicht allein die Community dafür verantwortlich ist. Bisher hat sich die Community immer sehr gut um Ausgeglichenheit bemüht. Außerdem sind in letzter Zeit viele neue Hochhäuser entstanden.

31.03.2008 - 21:51 Uhr

Allerdings sind die Werte zur Zeit alles andere als optimal - heute hätte der "Nicknamedieb" zur Abwechslung mal Recht: Das Transportnetz ist nur bei 98%.

Theorie: Nicknamedieb hat ein Script am Start und hat das Transportnetz willentlich vernachlässigt.

21.03.2008 - 20:06 Uhr

Hallo herbivore.

Du hast recht. Ich war nur irritiert, weil dieser Exception-Text erscheint, sobald man Convert.ToBoolean eingibt, wobei standardgemäß wohl die Überladung zu DateTime gemeint ist. Verwirrend, weil zu den Überladungen an sich keine Exception-Erklärung kommt. Wenn man mit der Maus über das Convert.ToBoolean fährt, steht noch mal ein anderer Text.

Fazit: Problem gelöst. War ein Anzeigefehler.

Danke

21.03.2008 - 19:41 Uhr

Hallo.

Kein Problem, sondern eher eine Frage aus Interesse. Visual C# schreibt zur Methode Convert.ToBoolean "Calling this method always throws InvalidCastException".

Warum? Ist diese Methode etwa unsicher?

Jack

15.03.2008 - 23:26 Uhr

Okay, ich weiß nicht, ob dieses Thema noch jemanden interessiert. Ich fordere einfach mal mein Glück heraus...

Nachdem ich jetzt kläglich am Thema Kryptografie gescheitert bin, gebe ich das Thema vorerst auf. Jetzt geht es um Schadensbegrenzung.

Also, angenommen jemand hat mein Programm und liest aus dem Netzverkehr die Datenbankverbindung heraus. MySQL-Connector verschlüsselt zwar das Passwort (irgendwie), aber der Datenbank-Name, die IP-Adresse und die Befehle werden trotzdem angezeigt. Ist es wahrscheinlich, dass ein erfahrener Programmierer / Hacker das Passwort aus diesen Daten entschlüsseln kann?

Mfg,
Jack

15.03.2008 - 14:31 Uhr

Am besten, ich steige bei Gelegenheit auf einen Webspace mit SSL-Unterstützung um. Dann müsste Connector mit aktiviertem "ENCRYPT=true" automatisch Daten verschlüsseln. Sehe ich das richtig?

Neue Erkenntnis:

ENCRYPT: Ist diese Option true, wird für alle zwischen Client und Server übermittelten Daten SSL-Verschlüsselung verwendet, wenn auf dem Server ein Zertifikat installiert ist. Zulässige Werte sind true, false, yes und no. Hinweis: Dieser Parameter ist zurzeit wirkungslos.

Soviel zu dieser Idee...

14.03.2008 - 21:46 Uhr

Ich habe mich nun mit NuSOAP, etc. beschäftigt. Inzwischen rauben mir auch Webservices den letzten Nerv. 😁 Wie heißt es so schön: Aller Anfang ist schwer. Ich bin jetzt auf mehrere Beispiele für Webservices gestoßen, aber wirklich verstanden habe ich das noch nicht.

Ich glaube, für meine Zwecke reicht auch ein selbst erstelltes, kleines PHP-Script aus. Das Problem ist nur, dass ich bisher noch keinen Hinweis dazu gefunden habe, wie ich die zu übermittelnden Daten von meinem Programm verschlüsseln, und dann auf dem Webspace wieder entschlüsseln kann.

Das Problem ist, dass ich einen Verschlüsselungs-Algorithmus brauche, der sowohl von meinem Programm als auch vom PHP-Script beherrscht wird. Dazu habe ich im Forum einen interessanten Algorithmus gefunden. Nur weiß ich nicht, wie ich den Key generieren und wo ich ihn speichern soll. Schließlich muss der auch dem Webspace bekannt sein. Aber einen festen Key benutzen oder den Key mitzusenden scheint mir riskant.

Sorry, wenn meine Frage für Profis trivial sein soll, aber ich hänge schon seit Monaten an diesem Problem. Hat dazu jemand eine Idee?

Jack

13.03.2008 - 12:51 Uhr

Hast du mal den Tipp von Calexico weiter verfolgt? Ich habe gestern abend mal etwas mit den NuSOAP Komponenten rumgespielt, und war ziemlich begeistert, wie einfach das ging ein WebService in PHP zu stricken. Vorallem, weil ein das Ding die Arbeit mit den WSDL abnimmt. Bei PHP5, oder den Klassen aus dem PEAR müsstest du IMHO das WSDL selber zusammenbasteln.

Mein Webspace-Anbieter unterstützt kein PHP5, nur PHP4. Daher meine Idee mit dem Webspace-Wechsel.

Nur um noch mal nachzuhaken:

Am besten, ich steige bei Gelegenheit auf einen Webspace mit SSL-Unterstützung um. Dann müsste Connector mit aktiviertem "ENCRYPT=true" automatisch Daten verschlüsseln. Sehe ich das richtig?

Jack

12.03.2008 - 22:29 Uhr

Danke erst mal für den Hinweis mit PEAR. Das könnte funktionieren...

...wenn mein Webspace da mitspielen würde. Ich habe versucht, PEAR auf meinem Webspace zu installieren, damit ich die benötigten fehlenden Pakete installieren kann. Die Installation hängt sich aber immer bei 30% auf. In den offizellen Foren ist das Problem zwar bekannt, aber es gibt wohl keine Lösung, wenn man nur eingeschränkte Server-Rechte hat. Damit scheint dieser Weg nicht weiter zu führen. Schade, denn diese Erkenntnis hat mich viel Zeit (Stunden!) und Nerven (ARGHH!) gekostet.

Am besten, ich steige bei Gelegenheit auf einen Webspace mit SSL-Unterstützung um. Dann müsste Connector mit aktiviertem "ENCRYPT=true" automatisch Daten verschlüsseln. Sehe ich das richtig?

Aber der Tipp mit PEAR war grundsätzlich sehr gut!

Jack

12.03.2008 - 13:44 Uhr

Danke für eure Antworten, robbyrc und Khalid, allerdings ist die Geschichte mit dem Web Service nicht ganz so einfach, wenn nicht gar unmöglich. Es ging wahrscheinlich aus meinem Startbeitrag nicht klar hervor, aber ich kann auf dem Server nichts installiert; ich bin auf den Webspace beschränkt.

Daher habe ich auch langsam die Befürchtung, dass ich unbedingt einen eigenen Server für mein Vorhaben brauche. Was aber aus Kostengründen nicht geht. 🙁

Danke,
Jack