Hallo,
ich habe eine kleine Lib erstellt namens
CryptConn.
Diese dient zur verschlüsselten Übertragung von Daten per Delphi zu PHP und umgekehrt.
Es wird vor dem Senden ein zufälliger AES-Schlüssel generiert. Mit diesem wird der Text verschlüsselt
und der Schlüssel wird RSA-verschlüsselt mitgeschickt.
Verwendet wurde:
AES-CBC 128Bit Key mit Padding und
RSA-OAEP mit einem leeren Init-Hash (kann leicht geändert werden)
In der Delphi-
Unit wurde ein Standard-Random verwendet, dieses kann aber leicht ausgetauscht werden.
In der PHP-
Unit wurde ein relativ sicherer Random-Algo verwendet.
Folgende Libs wurden verwendet:
Delphi:
-
DEC von negaH
(SHA1, AES, Base64)
- BigInteger von F. Rienhardt aka peanut (editiert von mir)
->Basis 256 hinzugefügt
(RSA)
PHP:
- SecurePHPLib
Weitere Angaben:
Der AES Schlüssel hat eine feste Länge von 128Bit.
Der RSA-Algo ist auf Delphi-Seite fest für Längen <= 20 Zeichen gestaltet ( kann aber leicht für beliebige Längen modifiziert werden).
Auf PHP-Seite gibt es keine Einschränkungen.
Für jeden Aufruf wird ein neuer AES-Schlüssel generiert.
Die RSA-Schlüssel müssen vorher ausgetauscht werden.
Im PHP-Script sind die Schlüssel Base64-kodiert um sie im Quelltext unter zubringen und sind im
PKCS1-Format.
Es können beliebige Formate genutzt werden (einfach mal in die RSA.php schauen).
Die RSA-Schlüssel in der Delphi-
Unit liegen als BigInteger ( e, d, n) vor.
Andere Formate müssen selber implementiert werden
PHP-Seitig können vorinstallierte Libs wie
mcrypt etc. genutzt werden, sind aber
nicht notwendig.
Hauptsächlich wurden Teile der securePHPLib nach Delphi übertragen.
Edit: Ihr könnt die Lib frei verwenden und abändern. Sie ist sicherlich noch nicht perfekt. Falls jemand diese erweitert, bitte hier reinposten, damit alle etwas davon haben
Edit 2: Fehler mit Randomize, Random und XOR korrigiert
Keywords: RSA , AES , Verschlüsselung , Kodierung , Encode , Encryption