Public-Key-PHP-Datenverschlüsselung

    Es ist notwendig, das banale Problem zu lösen: Schreiben Sie einen PHP-Algorithmus zum Verschlüsseln von Daten (Strings) mit einem Schlüssel.
    Zum Beispiel:
    $ data = "Zu verschlüsselnder Text";
    $ pass = "Serviceschlüssel";
    print my_encrypt ($ data, $ pass) gibt verschlüsselten Text aus, der nur mit dem Schlüssel entschlüsselt werden kann.
    Natürlich würde ich nicht kopfüber in habr hineingehen und in Foren und Wikipedia klettern.

    Gesucht durch eine Menge und ich n d e zu einem gut , und Wikipedia
    Es gibt eine Funktion mcrypt, die jedoch den Anschluss zusätzlicher Bibliotheken erfordert. Es gibt auch viele vorgefertigte Standardalgorithmen, für die es jedoch keine anständige (oder nicht anständige) Implementierung in PHP gibt. Grundsätzlich sind sie entweder in c (hier ein Beispiel ) oder in perl.
    Es gibt auch Module für PEAR, die es auch nicht gibt.
    Es gibt auch eine klassische "University"
    -Implementierung mit XOR: function x_crypt ($ data, $ key)
    {
    $ strlen_key = strlen ($ key);
    $ sbuf = '';

    für ($ i = $ n = 0, $ strlen_data = strlen ($ data); $ i <$ strlen_data; $ i ++)
    {
    if ($ n> = $ strlen_key) $ n = 0;
    $ sbuf. = chr (ord ($ key [$ n ++]) ^ ord ($ data [$ i]));
    }

    return $ sbuf;
    }
    Die Ver- und Entschlüsselung erfolgt durch eine Funktion. Explizites Minus:
    Originalzeile: Hallo, Genossen !!, Schlüssel: „Lol“
    Versuch, den „Salt“ -Schlüssel aufzuheben, Ergebnis:
    Such danach!
    Es ist deutlich zu sehen, dass ein Teil des Chiffretexts sichtbar ist, so dass diese Implementierung nicht sehr gut ist.

    Die Schönheit des Chiffretexts ist wichtig, außerdem können Sie die
    Funktion x_hex_decode ($ str)
    {
    für ($ i = 0, $ sbuf = null, $ strlen = strlen ($ str); $ i <$ strlen; $ i = $ i + Konstrukte verwenden 5)
    {
    $ sbuf. = Chr (hexdec (substr ($ str, $ i + 3, 2)));
    }
    return $ sbuf;
    }

    Funktion x_hex_code ($ str)
    {
    für ($ i = 0, $ sbuf = null, $ strlen = strlen ($ str); $ i <$ strlen; $ i ++)
    {
    $ sbuf. = chr (rand (65,70)). rand (0,9) .chr (rand (65,70)) .sprintf ('% X', ord (substr ($ str, $ i, 1) ));
    }
    return $ sbuf;
    }

    function decodex ($ data, $ key)
    {
    return x_hex_decode (x_crypt (base64_decode (gzinflate ($ data)), $ key));
    }

    Funktionscodex ($ data, $ key)
    {
    return gzdeflate (base64_encode (x_crypt (x_hex_code ($ data), $ key)), 9);
    }

    Wo x_hex_code zufälligen Müll hinzufügt, x_hex_decode ihn entfernt, verwirren base64_encode und gzdeflate das Ergebnis ein wenig, um keine Nutzlast zu transportieren.
    Während der Suche fand ich übrigens eine merkwürdige Notiz :
    In der Russischen Föderation sind kommerzielle Aktivitäten im Zusammenhang mit der Verwendung von Kryptografietools lizenzpflichtig. Seit dem 22. Januar 2008 gilt der Erlass der Regierung der Russischen Föderation vom 29. Dezember 2007 N 957 „Über die Genehmigung der Bestimmungen zur Genehmigung bestimmter Arten von Aktivitäten im Zusammenhang mit Verschlüsselung (kryptografisch)“, mit dem die Bestimmungen über die Genehmigung von Aktivitäten zur
    Verteilung von Verschlüsselung (kryptografisch)
    für Wartungszwecke verabschiedet wurden Verschlüsselungsmittel (kryptografische Mittel) zur
    Bereitstellung von Diensten auf dem Gebiet der Informationsverschlüsselung;
    Entwicklung, Herstellung von Verschlüsselungsmitteln (kryptografische Mittel), die geschützt sind mit die Verwendung von Verschlüsselungs- (kryptografischen) Mitteln für Informations- und Telekommunikationssysteme

    Ist das nicht der Grund, warum solch ein (scheinbar unschuldiger) Code schwer zu finden ist?
    Bitte helfen Sie mir, einen solchen Algorithmus / eine solche Klasse / Funktion zu finden.
    Nach den Regeln des Blogs „Hilfe“ verpflichte ich mich, eine Arbeitsfunktion zu gestalten und ggf. die Arbeit zu beschreiben.
    Wenn die Habrasociety das Problem für weit hergeholt oder irrelevant hält, verschwindet diese Habratopik, als ob es nicht existiere.
    Vielen Dank.

    Jetzt auch beliebt: