Ich habe meine Verschlüsselungsfunktion funktioniert ordnungsgemäß, aber ich kann nicht herausfinden, wie die Entschlüsselungsfunktion erhalten, um richtige Ausgabe zu geben.PHP Verschlüsseln/Entschlüsseln mit TripleDes, PKCS7 und ECB
Hier ist meine Verschlüsselungsfunktion:
function Encrypt($data, $secret)
{
//Generate a key from a hash
$key = md5(utf8_encode($secret), true);
//Take first 8 bytes of $key and append them to the end of $key.
$key .= substr($key, 0, 8);
//Pad for PKCS7
$blockSize = mcrypt_get_block_size('tripledes', 'ecb');
$len = strlen($data);
$pad = $blockSize - ($len % $blockSize);
$data .= str_repeat(chr($pad), $pad);
//Encrypt data
$encData = mcrypt_encrypt('tripledes', $key, $data, 'ecb');
return base64_encode($encData);
}
Hier ist meine decrypt Funktion:
function Decrypt($data, $secret)
{
$text = base64_decode($data);
$data = mcrypt_decrypt('tripledes', $secret, $text, 'ecb');
$block = mcrypt_get_block_size('tripledes', 'ecb');
$pad = ord($data[($len = strlen($data)) - 1]);
return substr($data, 0, strlen($data) - $pad);
}
Im Moment habe ich einen Schlüssel von test
bin mit und ich versuche 1234567
zu verschlüsseln. Ich bekomme die Base64-Ausgabe von der Verschlüsselung, die ich suche, aber wenn ich entschlüsseln gehe, gibt es nichts zurück (eine leere Fläche).
Ich bin nicht sehr versierte Verschlüsselung/Entschlüsselung, so dass jede Hilfe sehr geschätzt wird !!
Ich empfehle, 3DES durch AES, ECB mit CBC und MAC zu ersetzen. – CodesInChaos
Vielen Dank für Ihre Empfehlung @CodesInChaos. Ich bin nicht in der Lage, die Besonderheiten wie diese zu ändern und muss verwenden, was ich habe, obwohl es wahrscheinlich weniger sicher ist. –