Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mcrypt - wie mach ich das?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mcrypt - wie mach ich das?

    Hallo zusammen!

    Da die Adminsbei meinem letzten Versuch, irgendwas zu fragen, mein Thema freundlicherweise getrasht haben, versuche ich es dieses Mal etwas benutzerfreundlicher...

    Ich würde gerne eine Vereinsdatenbank einrichten, in der auch z.B. Kontodaten stehen. Deshalb möchte ich die Daten verschlüsseln, es muss allerdings eine zweiwege-Verschlüsselung sein, da man ja auch Kontodaten abrufen und ändern muss...

    Meine Frage lautet jetzt:
    1. Gibt es eine funktion wie md5, die ach "rückwärts" klappt?
    2. Sollte 1 negativ sein: Wie realisiere ich denn Mcrypt?


    Ich habe da leider überhaupt keine Ahnung!

    MfG.
    Djscaleo

  • #2
    Hast Du schon die Beispiele unter PHP: Beispiele - Manual durchgearbeitet?

    Kommentar


    • #3
      PHP-Code:
      $key "E4HD9h4DhS23DYfhHemkS3Nf";// 24 bit Key
      $iv "fYfhHeDm";// 8 bit IV
      $input "Text to encrypt";// text to encrypt
      $bit_check=8;// bit amount for diff algor.

      $strencrypt($input,$key,$iv,$bit_check);
      echo 
      "Start: $input - Excrypted: $str - Decrypted: ".decrypt($str,$key,$iv,$bit_check); 
      Dies Beispiel findest du auf PHP: Mcrypt - Manual

      Kommentar


      • #4
        Danke schon mal...


        Aber wie binde ich das denn jetzt ein?

        Sagen wir mal, ich übergebe über ein formular die Werte $a, $b und $c, welche dann in die Verschlüsselung laufen und dann über mcrypt wieder entschlüsselt werden und mit echo ausgegeben werden.

        Wie mach ich das?


        P.S. Ist bitcheck notwendig?

        Kommentar


        • #5
          $input = "Text to encrypt";// text to encrypt
          $input ist Variable mit der Zeichenkette, die verschlüsselt werden soll.
          Welche Variable speichert den Text, den Du verschlüsseln willst?

          Kommentar


          • #6
            Speichern? Meinst du etwa in MySQl schreiben?

            ->normales Insert, bzw bei änderungen Update

            Kommentar


            • #7
              Nein, ich meinte "welche Variable enthält den Text, den Du verschlüsseln willst?"

              Kommentar


              • #8
                Versteh ich net...

                Ich habe da dann z.B. in der Tabelle das Feld Kontonummer, in die dann der Wert $konzonummer eingetragen wird.
                Insgesammt soll das mal mit dem Verschlüsseln für etwa 1000 Variablen klappen...

                Muss ja alles von der Anschrift bis zum passwort verschlüsselt werden.

                Kommentar


                • #9
                  Insgesammt soll das mal mit dem Verschlüsseln für etwa 1000 Variablen klappen...
                  Dann musst Du sie alle an mcrypt übergeben (einzeln oder irgendwie zusammengesetzt), so wie es im Beispiel mit $input passiert. $input ist das was im Beispiel verschlüsselt werden soll.
                  Bei Dir ist ... das, was verschlüsselt werden soll.

                  Kommentar


                  • #10
                    Also muss ich dann, wenn mehrere Werte gleichzeitig verschlüsselt werden, auch fünf mal Mcrypt im Code stehen haben?

                    Beispiel:
                    PHP-Code:
                      <?php
                    $encrypted_kontonummer 
                    mcrypt_ecb (MCRYPT_3DES$key$inputMCRYPT_ENCRYPT);
                    $encrypted_bankleitzahl mcrypt_ecb (MCRYPT_3DES$key$inputMCRYPT_ENCRYPT);
                    $encrypted_inhaber mcrypt_ecb (MCRYPT_3DES$key$inputMCRYPT_ENCRYPT);
                    $encrypted_bank mcrypt_ecb (MCRYPT_3DES$key$inputMCRYPT_ENCRYPT);

                    ?>
                    ?

                    Oder kann man eine Universal function machen?

                    also

                    PHP-Code:
                    verschluesseln($bank);
                    $insert... $bank 

                    Kommentar


                    • #11
                      Wenn 5 einzelne Felder in der DB landen sollen, musst Du wohl 5 Aufrufe machen.

                      Kommentar


                      • #12
                        Mal so nebenbei, ich denke ein wichtigerer Punkt ist die Verschlüsselung auf dem Weg:

                        Schauen wir uns doch mal den ganzen Ablauf an:

                        User gibt Daten im Browser ein und sendet das Formular ab
                        -> nutzt du SSL ?
                        wenn nicht fliegen die Daten jetzt schon unverschlüsselt durchs Netz über diverse Knoten (am Anfang vielleicht durch ein offenes oder schlecht geschütztes WLAN) bis sie an deinem Server ankommen. Ein offizielles SSL-Zertifikat ist nicht billig ! Selbst signierte schrecken den normalen User eher ab!

                        Dann verarbeitest du die Daten und verschlüsselst sie und speicherst sie ab.

                        Auf der anderen Seite gibt es wohl ein Backend das dir oder den anderen "Verantwortlichen" zur Verfügung steht, hier das gleiche Spiel, Daten werden dann auf dem Server entschlüsselt und dann zu deinem Browser gesendet, setzt du kein SSL ein, wandern die Daten auch hier unverschlüsselt durchs Netz.

                        Deshalb solltest du dir überlegen ob die Verschlüsselung nur Serverseitig wirklich ein sicheres gesamt-System macht und ob du solche sensiblen Daten wirklich online stehen lassen willst.

                        Wenn wirklich jemand auf deinen Webspace kommt (via ftp, Lücke in deinen PHP-Scripten, einer verwendeten Anwendung (forum oder was auch immer), kommt er automatisch auch an deine Datenbankzugangsdaten und an die Informationen wie und mit welchem Schlüssel du verschlüsselst ran, mit den Informationen kann er den Kram selbst entschlüsseln. Das einzige wovor dich die Verschlüsselung der Datenbank schützt ist, dass Datenbankdumps nicht direkt mißbraucht werden können oder wenn jemand NUR an deine Datenbankzugangsdaten kommt, dass er nur Verschlüsselte Daten hat.

                        Jetzt zum eigentlichen Thema:

                        Wenn du die Daten eh wieder entschlüsseln musst, kannst du auch alle Bankdaten in ein Array speichern (mit passenden Indizes) das array serialisieren ( PHP: serialize - Manual ) dann diesen serialiserten string verschlüsseln und in der DB dann in einem Feld speichern, dann musst du nur 1 Feld entschlüsseln und de-serialisieren ( PHP: unserialize - Manual ) und hast es dann ein Array nur mit den Bankdaten. Ist zwar kein so schönes DB-Design, aber vereinfacht die Ver und Entschlüsselung

                        Ich denke du wirst auch als Datentyp für die verschlüsselten Daten in der Datenbank BLOB nutzen müssen.

                        Und informiere dich vorher auch etwas darüber welchen Algorithmus und so du verwendest.

                        Kommentar


                        • #13
                          Es gibt übrigens auch DBM-Systeme, die von sich aus eine Datenbank verschlüsselt anlegen können, zum Beispiel Encrypting a Database
                          Das macht die Verarbeitung einfacher. Andererseits schützt es Dich nicht davor, dass Dein Skript die Daten - zum Beispiel durch sql injections - "freiwillig" rausrückt. Aber das Problem hast Du in verschiedenen Ausprägungen vermutlich bei all Deinen Versuchen

                          Kommentar


                          • #14
                            Ich habe jetzt durch einen Freund blowfish gefunden.

                            Der hilft mir gleich bei der Einrichtung...


                            Aber nochmal vielen Dank, das Ihr mir alle so gut geholfen habt!!!!!!!!!!!!!!!!

                            Kommentar

                            Lädt...
                            X