Laden...

Verschlüsselung zwischen PHP und C#

Erstellt von Andybritten vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.242 Views
A
Andybritten Themenstarter:in
92 Beiträge seit 2009
vor 13 Jahren
Verschlüsselung zwischen PHP und C#

Hallo!

Ich habe mir ein Porgramm geschrieben welches mit einer PHP Datei kommuniziert.
Jedoch möchte ich den POST Befehl der von dem C# Programm ausgeht verschlüsseln und später in PHP entschlüsseln und umgekehrt.
Bin jetzt seit gut einem Tag auf der Suche nach einer Verschlüsselung die funktioniert... Sowohl in PHP als auch in C#.
Habe schon viele Beispiele gefunden gehabt aber leider kann ich in PHP nicht auf diese MCRYPT Libraray zugreifen/sie installieren.
Hat jemand von euch einen Verschlüsselungsalgorithmus der einfach nur einen String verschlüsselt (mit Passwort) und wieder entschlüsselt (PHP/C#)?
Das wär echt super 😃

Danke schonmal im Vorraus!

M
402 Beiträge seit 2005
vor 13 Jahren

Warum machst du das ganze nicht per SSL?

A
Andybritten Themenstarter:in
92 Beiträge seit 2009
vor 13 Jahren

Hast du ein Beispiel dafür?
Finde leider nichts anständiges bei der Suche nach "C# PHP POST request mit SSL".

799 Beiträge seit 2007
vor 13 Jahren

C# PHP POST request mit SSL

Nein, damit ist gemeint, dass der Webserver auf dem PHP läuft die Website per HTTPS anbietet.

Ich glaube, dann ist sogar kein zusätzlicher Mehraufwand mehr nötig, jedenfalls bei der C#-Anwendung. Das kann das Framework fast gänzlich alleine.

Wenn du selbst verschlüsseln willst wird es etwas haariger da ein halbwegs sicherer Algorithmus das Jounglieren mit sehr großen Zahlen bedeutet. Wenn es in deiner Hand liegt, ist die HTTPS-Lösung besser.

Falls du dieses MCRYPT verwenden willst und es noch nicht da ist, wäre Installieren eine Idee 😉.

Wenn du einen gratis Server verwendest und überhaupt keine Möglichkeit hast die Serverkonfiguration zu ändern, wäre es interessant wie sicher die Verschlüsselung sein soll.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
A
Andybritten Themenstarter:in
92 Beiträge seit 2009
vor 13 Jahren

Ich hab leider nur shared Webspace.
Hab da leider keinen Zugriff auf den Webserver!
Wenn das Tool einen POST reuqest sendet und HTTPS auf der Webseite aktiv ist wird der POST Befehl und dessen Inhalt automatisch verschlüsselt gesendet?
Das wär echt stark. Ausser ich hab was falsch verstanden.

Die Verschlüsselung muss keines Falls stark sein.
Base64 kam mir auch schon in den Kopf. Leicht zu nutzen, klappt auf PHP und C# Seite ohne Probleme.
Nur das ist keine Verschlüsselung noch ist das Ding sicher 😄
Aber mir würde schon was so leichtes wie Base64 reichen wenn mans mit Passwort verschlüsseln könnte.
Vielleicht hat ja wer eine Idee.

T
381 Beiträge seit 2009
vor 13 Jahren

Wenn du kein Crypt Modul in PHP hast kannst du als einfach zu implementierende Verschlüsselung ein xor über deine Daten legen und anschließend nach base64 convertieren (Zur Übertragung)

Gibt es auch fertig hier

16.806 Beiträge seit 2008
vor 13 Jahren

Ich habe bei manchen Formularen zum Schutze der Manipulation einen Hash als versteckten Input-Wert. Der Hash ist aber nichts anderes als ein mit Hilfe von Rijndael verschlüsselter Pfad.

Die Basis hierfür ist zB Encrypt and Decrypt Strings
Das müsste mit PHP und C# klappen.

T
381 Beiträge seit 2009
vor 13 Jahren

Dann kann man auch gleich die Daten mit Rijndael verschlüsseln wenn die nicht leserlich sein sollen. Ansonsten ist es eher eine Signatur aber genau so effektiv gegen Veränderung.

Xor hat ein großes Problem: Wenn man den Klartext kennt, kann man beliebige Stellen gezielt Manipulieren.

Was die Sicherheit im allgemeinen an geht: Bei synchroner Verschlüsselung wirst du immer den Schlüssel aus dem C# Programm ziehen können. Spätestens zur Laufzeit steht der im Speicher.
Ich habe mich daher mal für eine Asynchrone Verschlüsselung entschieden, da hilft es nicht den (Public) Key im Client nur zu kennen, man müsste ihn auch ändern um z.B. mit einem eigenen Proxy kommunizieren zu können. Dafür ist aber das Crpyto Modul notwendig. Wenn du das hast kann ich dir Quellcode dazu schicken.

16.806 Beiträge seit 2008
vor 13 Jahren

Dann kann man auch gleich die Daten mit Rijndael verschlüsseln wenn die nicht leserlich sein sollen. Ansonsten ist es eher eine Signatur aber genau so effektiv gegen Veränderung.

Kommt immer auf die Situation an.
In meinem Fall serialisiert mein MVC Controller automatisch das Objekt, der Hash ist hier nur eine Überprüfung, ob sich gewisse Werte (ID....) auch nicht geändert haben, zB mit Hilfe von Firebug und Co.

A
Andybritten Themenstarter:in
92 Beiträge seit 2009
vor 13 Jahren

Danke für die Antworten 😃
Wäre sehr cool wenn du mir den Code von die mal schicken könntest 😃

T
381 Beiträge seit 2009
vor 13 Jahren

Das ist alles noch im Projekt verflochten und ist damit nicht direkt compilierbar. Der PHP Teil ist sehr klein und wurde bisher nur für tests benutzt.
Du musst dir natürlich selbst *.pem files generieren.

Ziel war es ein ganzes Lizenzsystem zu implementieren, wurde aber aus Zeitgründen noch nicht vollendet. Daher kann ich auch kaum Support zu dem Code anbieten, ich hoffe der hilft dennoch. Die ein oder andere Funktion könnte bestimmt hilfreich sein.

Gruß, Tarion

A
Andybritten Themenstarter:in
92 Beiträge seit 2009
vor 13 Jahren

Dickes Danke!
Ich werds mir auf jeden Fall anschauen 😃