Eine kleine PHP-Klasse, die Format Preserving Encryption über Feistel Network implementiert.
Sie können cryptomute über Composer installieren (Packagist hat das Loostro/ cryptomute Paket). Verwenden Sie in Ihrer composer.json
Datei Folgendes:
{
"require" : {
"loostro/ cryptomute " : " ^1.0 "
}
}
Und führen Sie Folgendes aus: php composer.phar install
. Danach können Sie den Autoloader anfordern und cryptomute verwenden:
require_once ' vendor/autoload.php ' ;
use cryptomute cryptomute ;
$ cryptomute = new cryptomute (
' aes-128-cbc ' , // cipher
' 0123456789zxcvbn ' , // base key
7 , // number of rounds
);
$ password = ' 0123456789qwerty ' ;
$ iv = ' 0123456789abcdef ' ;
$ plainValue = ' 2048 ' ;
$ encoded = $ cryptomute -> encrypt ( $ plainValue , 10 , false , $ password , $ iv );
$ decoded = $ cryptomute -> decrypt ( $ encoded , 10 , false , $ password , $ iv );
var_dump ([
' plainValue ' => $ plainValue ,
' encoded ' => $ encoded ,
' decoded ' => $ decoded ,
]);
array(3) {
["plainValue"]=>
string(4) "2048"
["encoded"]=>
string(9) "309034283"
["decoded"]=>
string(4) "2048"
}
Cipher ist das erste Konstruktorargument. Unterstützte Verschlüsselungsmethoden sind:
Chiffre | IV |
---|---|
des-cbc | Ja |
aes-128-cbc | Ja |
aes-128-ecb | NEIN |
aes-192-cbc | Ja |
aes-192-ecb | NEIN |
camellia-128-cbc | Ja |
camellia-128-ecb | NEIN |
camellia-192-cbc | Ja |
camellia-192-ecb | NEIN |
Key ist das zweite Konstruktorargument. Basisschlüssel, von dem alle Rundschlüssel abgeleitet werden.
Rounds ist das dritte Konstruktorargument. Muss eine ungerade ganze Zahl größer oder gleich 3 sein. Mehr Runden sind sicherer, aber auch langsamer. Der empfohlene Wert beträgt mindestens 7.
$minValue
, $maxValue
)Legt Mindest- und Höchstwerte fest. Wenn das Ergebnis außerhalb des Bereichs liegt, wird es erneut verschlüsselt (oder erneut entschlüsselt), bis die Ausgabe innerhalb des Bereichs liegt.
$plainValue
, $base
, $pad
, $password
, $iv
)Verschlüsselt Daten. Nimmt folgende Argumente an:
$plainValue
(String) Eingabedaten, die verschlüsselt werden sollen$base
(int) Eingabedatenbank, akzeptierte Werte sind 2 (binär), 10 (dezimal) oder 16 (hexadezimal)$pad
(bool) linke Ausgabe auffüllen, damit sie mit der Länge von $maxValue
übereinstimmt?$password
(String) Verschlüsselungspasswort$iv
(String) Initialisierungsvektor – nur wenn die Verschlüsselung dies erfordert$cryptValue
, $base
, $pad
, $password
, $iv
)Entschlüsselt Daten. Nimmt folgende Argumente an:
$cryptValue
(String) Eingabedaten, die entschlüsselt werden sollen$base
(int) Eingabedatenbank, akzeptierte Werte sind 2 (binär), 10 (dezimal) oder 16 (hexadezimal)$pad
(bool) linke Ausgabe auffüllen, damit sie mit der Länge von $maxValue
übereinstimmt?$password
(String) Verschlüsselungspasswort$iv
(String) Initialisierungsvektor – nur wenn die Verschlüsselung dies erfordert cryptomute ist unter der MIT-Lizenz (MIT) lizenziert.