PHP 7.2 में Mcrypt को हटाने की तैयारी



openssl php-7.1 (1)

इसलिए mcrypt पर समय बढ़ने के साथ PHP 7.2 में जाएगा। बेशक एक विकल्प है: खुलता है।

मुझे एईसी 256 सीबीसी का उपयोग करके और आईवीएस को संरक्षित करने के लिए एमसीट्रिप से ओपेनशिल में स्विच करना मुश्किल है। मैं क्रिप्टोग्राफी के लिए नए तरह का हूं, इसलिए मैं वास्तव में सब कुछ नहीं जानता, लेकिन मैं मूल बातें समझता हूं।

मान लीजिए कि मेरे पास निम्नलिखित कोड हैं

function encrypt($masterPassword, $data) 
{
    $keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM);
    $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv);
    return base64_encode($iv . $encrypted);
}

function decrypt($masterPassword, $base64) 
{
    $keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
    $data = base64_decode($base64);
    $iv = substr($data, 0, $ivSize);
    $encrypted = substr($data, $ivSize, strlen($data));
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
    return trim($decrypted);
}

मैं इस कोड को "क्रिप्टोकरंसी" का उपयोग कैसे कर सकता हूं?


आप इसे परिवर्तित नहीं कर सकते, क्योंकि रिजेंडेल -251 एईएस -256 नहीं है, और ओपनएसएसएल विस्तार रिजिन्देल -256 समर्थन के साथ जहाज नहीं करता है।
AES-256 एक 256-बिट (32-बाइट) कुंजी के साथ Rijndael-128 है।

दुर्भाग्य से, आपको अपने सभी डेटा को फिर से एन्क्रिप्ट करना होगा।

संपादित करें: इसके अलावा, वर्तमान में आप जिस योजना का उपयोग कर रहे हैं, उसमें कुछ समस्याएं हैं:

  • यह प्रमाणीकरण का अभाव है (HMAC इसे PHP में करने का सबसे आसान तरीका है)
  • इसमें उचित पैडिंग (शून्य बाइट के साथ mcrypt पैड का अभाव है; आपको PKCS # 5 पैडिंग की तरह कुछ चाहिए), जो ब्लॉक मोड एन्क्रिप्शन को सुरक्षित रखने के लिए आवश्यक है।
  • यह बाइट-सुरक्षित नहीं है (आप mb_substr() का उपयोग कर रहे हैं)

अच्छी खबर यह है कि ओपनएसएसएल आपके लिए स्वचालित रूप से पीकेसीएस # 5 पैडिंग करेगा, लेकिन आपको आगे भी जाना चाहिए और एक ठोस एन्क्रिप्शन लाइब्रेरी का उपयोग करना चाहिए जैसे defuse/php-encryption





php-7.1