PHP7.1 mcrypt विकल्प




encoding decode (4)

मैकक्रिप्ट फ़ंक्शन को पीएचपी 7.1.0 के रूप में चित्रित किया गया है।

मेरा पदच्युत स्ट्रिंग एनकोड / डीकोड कार्य:

$key: secret key
$str: string


$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key))));

$decoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($str), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

क्या आप कुछ विकल्प सुझा सकते हैं?


MCRYPT_RIJNDAEL_256 लिए मैंने यहां PHP7.3 के लिए एक पूर्ण उत्तर पोस्ट किया: https://.com/a/53937314/243782

स्निपेट:

phpseclib पुस्तकालय के साथ इस तरह काम करता है

$rijndael = new \phpseclib\Crypt\Rijndael(\phpseclib\Crypt\Rijndael::MODE_ECB);
$rijndael->setKey(ENCRYPT_KEY);
$rijndael->setKeyLength(256);
$rijndael->disablePadding();
$rijndael->setBlockLength(256);

$decoded = $rijndael->decrypt($term);

जैसा कि ऊपर बताया गया है, open_ssl mcrypt के लिए एक अच्छा विकल्प है। एकमात्र समस्या जो मुझे open_ssl से थी, वह यह है कि इसका उपयोग बड़े तार के लिए नहीं किया जा सकता है।

मैंने एक स्क्रिप्ट (स्टैटिक क्लास) लिखी, जो इस समस्या को खत्म कर देती है (बड़े स्ट्रिंग्स को चंक्स में विभाजित किया जाता है और बैकग्राउंड में अलग से एन्क्रिप्ट / डिक्रिप्ट किया जाता है)।

जनता को देखें: https://gist.github.com/petermuller71/33616d55174d9725fc00a663d30194ba


आपको इसके बजाय openssl_encrypt । का उपयोग करना चाहिए। सादर!


echo encrypt_openssl($str, $key);

function encrypt_openssl($msg, $key, $iv = null) {
        $iv_size = openssl_cipher_iv_length('AES-256-CBC');
        if (!$iv) {
            $iv = openssl_random_pseudo_bytes($iv_size);
        }
        $encryptedMessage = openssl_encrypt($msg, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
        return base64_encode($iv . $encryptedMessage);
    }

mcrypt को PHP 7.1 ऑप्शनल ओपनसेल में हटाया जा सकता है





php-7.1