PHP में एक कोल्डफ्यूजन एन्क्रिप्टेड स्ट्रिंग को एनक्रिप्ट/अन-एन्क्रिप्ट करना



encryption coldfusion (1)

मैं अप्रभावी स्थिति में हूं जहां मुझे मौजूदा कोल्डफ्यूजन एप्लिकेशन के साथ कार्यक्षमता बनाए रखना है। इसकी प्रवेश प्रक्रिया के हिस्से के रूप में कोल्डफ़ायज़ ऐप एक एन्क्रिप्टेड स्ट्रिंग के साथ एक कुकी संग्रहीत करता है।

encrypt(strToEncrypt, theKey, "AES", "Base64")

मैं MSrypt और निम्नलिखित कोड का उपयोग करके PHP में इस स्ट्रिंग को सफलतापूर्वक डिक्रूट कर सकता हूं

mcrypt_decrypt(
    MCRYPT_RIJNDAEL_128,
    base64_decode($theKey),
    base64_decode($encrypted_string),
    MCRYPT_MODE_ECB, "0000000000000000")

मुझे फिलहाल ही एन्क्रिप्शन करने की आवश्यकता है ताकि ColdFusion ऐप कुकी में डेटा का उपयोग कर सके।

फिलहाल मेरे पास क्या है

mcrypt_encrypt( MCRYPT_RIJNDAEL_128, base64_decode($theKey), $strToEncrypt, MCRYPT_MODE_ECB, "0000000000000000");

हालांकि, यह समकक्ष ColdFusion एन्क्रिप्शन एल्गोरिदम के साथ असंगत है

decrypt(strToDecrypt, theKey, "AES", "Base64")

एक Given final block not properly padded फेंकने Given final block not properly padded त्रुटि Given final block not properly padded

किसी भी मदद की बहुत सराहना की

जेम्स


यह नहीं पता कि यह कितना मदद करेगा, लेकिन मुझे निम्नलिखित काम करना पड़ा है। मैं सीएफ़ को खुश करने के लिए सोचता हूं कि आपको अपने एन्क्रिप्शन को एक निश्चित लंबाई तक पैड करना पड़ता है

सीएफ में एन्क्रिप्ट

Encrypt(data, encKey, 'AES/CBC/PKCS5Padding', encoding, encIv)

PHP में डिक्रिप्ट करें

function Decode($data, $encKey, $encIv, $format = 'uu') {
    if ($format === 'uu') {
        $data = Convert_uudecode($data);
    } else if ($format === 'hex') {
        $data = Pack('H*', $data);
    } else if ($format === 'base64') {
        $data = Base64_Decode($data);
    } else if ($format === 'url') {
        $data = UrlDecode($data);
    }
    $data = MCrypt_decrypt(MCRYPT_RIJNDAEL_128, $encKey, $data, 'cbc', $encIv);
    $pad = Ord($data{strlen($data)-1});
    if ($pad > strlen($data)) return $data;
    if (strspn($data, chr($pad), strlen($data) - $pad) != $pad) return $data;
    return substr($data, 0, -1 * $pad); 
}

PHP में एन्क्रिप्ट करें

function Encode($data, $encKey, $encIv, $format = 'uu') {
    $pad = 16 - (StrLen($data) % 16);
    if ($pad > 0) {
        $data .= Str_repeat(Chr($pad), $pad);
    }
    $data = MCrypt_encrypt(MCRYPT_RIJNDAEL_128, $encKey, $data, 'cbc', $encIv);
    if ($format === 'uu') {
        return Convert_uuencode($data);
    } else if ($format === 'hex') {
        return Bin2Hex($data);
    } else if ($format === 'base64') {
        return Base64_Encode($data);
    } else if ($format === 'url') {
        return UrlEncode($data);
    }
}

सीएफ में डिक्रिप्ट करें

Decrypt(data, encKey, 'AES/CBC/PKCS5Padding', encoding, encIv)

किसी कारण से मुझे याद नहीं आ रहा है, मैं एन्कोडिंग के लिए 'यू' का समर्थन करता हूं।





mcrypt