TRIPLE-DES-Verschlüsselung/Entschlüsselung mit php
Ich habe diese TRIPLE-DES-VERSCHLÜSSELUNG CODE IN PHP
$encryption_key = "CE51E06875F7D964";
$data='tokenNo=test&securityCode=111' ;
echo $desEncryptedData = encryptText_3des($data, $encryption_key);//outputs 3des encrypted data
function encryptText_3des($plainText, $key) {
$key = hash("md5", $key, TRUE);
for ($x=0;$x<8;$x++) {
$key = $key.substr($key, $x, 1);
}
$padded = pkcs5_pad($plainText,
mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));
return $encrypted;
}
function pkcs5_pad ($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
Im in der Lage, die Daten zu verschlüsseln, wie xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E=
Nun habe ich den key,werde ich in der Lage zu entschlüsseln dieser Daten-nur-text-format?
Versuchte ich es auf diese Weise
$encryption_key = "CE51E06875F7D964";
$data='xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E=' ; //encrypted data
echo $desEncryptedData = encryptText_3des($data, $encryption_key);//outputs 3des encrypted data
function encryptText_3des($plainText, $key) {
$key = hash("md5", $key, TRUE);
for ($x=0;$x<8;$x++) {
$key = $key.substr($key, $x, 1);
}
$padded = pkcs5_unpad($plainText,
mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));
return $encrypted;
}
function pkcs5_unpad($text)
{
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text)) return false;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
return substr($text, 0, -1 * $pad);
}
Aber ich könnte nicht es tun.IST das, was ich Tue, falsch ist?Bitte schlagen Sie mich eine Möglichkeit das zu entschlüsseln?Ist der Verschlüsselungs-Schlüssel wird zum entschlüsseln der Daten verwendet, die in die triple-DES?Bitte helfen Sie
Verschlüsseln von Daten (cookies oder response-Parameter) ist notorisch schwierig, richtig zu machen. CBC-Modus stellt eine triviale padding-oracle-Schwachstelle. Replay-Angriffe werden sogar noch einfacher. Schlüsselableitung ist wirklich dubios auch in diesem Fall.
Es ist am besten nicht zu verwenden, PHP mcrypt, es ist abandonware, wurde nicht aktualisiert, in den Jahren, und unterstützt nicht den standard PKCS#7 (geborene PKCS#5) - Polsterung, die nur nicht-standard-null-padding, der kann auch nicht verwendet werden mit binären Daten. mcrypt hat viele hervorragende bugs aus dem Jahr 2003. Die mcrypt-extension ist veraltet, entfernt werden PHP-7.2. Betrachten Sie stattdessen mit entschärfen oder RNCryptor, Sie bieten eine vollständige Lösung und sind gepflegt und korrekt ist.
Die schlüsselableitung schlecht ist, verwenden Sie PBKDF2 oder einem ähnlichen Schlüssel-Ableitung-Methode.
Ein CBC-padding-oracle-Angriff funktioniert nur, wenn die Polsterung Fehler zurückgegeben, um den Angreifer.
Es ist am besten nicht zu verwenden, PHP mcrypt, es ist abandonware, wurde nicht aktualisiert, in den Jahren, und unterstützt nicht den standard PKCS#7 (geborene PKCS#5) - Polsterung, die nur nicht-standard-null-padding, der kann auch nicht verwendet werden mit binären Daten. mcrypt hat viele hervorragende bugs aus dem Jahr 2003. Die mcrypt-extension ist veraltet, entfernt werden PHP-7.2. Betrachten Sie stattdessen mit entschärfen oder RNCryptor, Sie bieten eine vollständige Lösung und sind gepflegt und korrekt ist.
Die schlüsselableitung schlecht ist, verwenden Sie PBKDF2 oder einem ähnlichen Schlüssel-Ableitung-Methode.
Ein CBC-padding-oracle-Angriff funktioniert nur, wenn die Polsterung Fehler zurückgegeben, um den Angreifer.
InformationsquelleAutor Piya | 2014-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die Lösung:
Grüße.
InformationsquelleAutor Damian
hier schrieb ich 3DES-EZB Kryptographie in PHP. dort erhalten Sie zwei-Klassen-Datei "Crypt_mcrypt" mit "mcrypt" und "Crypt_openssl" mit "openssl". so können Sie alle von Ihnen verwenden, aber es ist
Wenn Sie die Eingabe des Wortes mcrypt in Ihrem code, Sie sind wahrscheinlich, Fehler zu machen. Obwohl es möglich ist, um eine relativ sichere Kryptographie-Bibliothek baut auf der mcrypt (die frühere version von entschärfen/php-Verschlüsselung haben), schalten Sie Ihren code von openssl wird, bieten eine bessere Sicherheit, performance, Wartbarkeit und Portabilität. Noch besser: verwenden Sie libsodium statt.
InformationsquelleAutor Raihan Al-maMun
Hey @black buddy die decrypt-Funktion ist perfekt, die Sache ist, dass Sie brauchen, um passieren die encyrpted Daten durch die Funktion verschlüsseln.
InformationsquelleAutor Umair Baig