2012-11-12 10 views
7

के साथ PHP एन्क्रिप्ट/डिक्रिप्ट मुझे अपना एन्क्रिप्शन फ़ंक्शन ठीक से काम कर रहा है, हालांकि मैं यह समझ नहीं सकता कि उचित आउटपुट देने के लिए डिक्रिप्ट फ़ंक्शन कैसे प्राप्त करें।ट्रिपलडेस, पीकेसीएस 7, और ईसीबी

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); 
} 

अभी मैं test की एक प्रमुख उपयोग कर रहा हूँ और मैं 1234567 एन्क्रिप्ट करने के लिए कोशिश कर रहा हूँ:

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); 

} 

यहाँ मेरी डिक्रिप्ट समारोह है:

यहाँ मेरी एन्क्रिप्ट कार्य है। मुझे एन्क्रिप्शन से बेस 64 आउटपुट मिलता है जिसे मैं ढूंढ रहा हूं, लेकिन जब मैं डिक्रिप्ट करने जाता हूं तो यह कुछ भी नहीं (एक खाली क्षेत्र) देता है।

मैं एन्क्रिप्शन/डिक्रिप्शन में बहुत अच्छी तरह से ज्ञात नहीं हूं इसलिए किसी भी मदद की बहुत सराहना की जाती है !!

+2

मैं सीईसी के साथ एईएस, ईसीबी के साथ 3 डीईएस को बदलने और एक मैक जोड़ने की सलाह देता हूं। – CodesInChaos

+0

आपकी सिफारिश @CodesInChaos के लिए धन्यवाद। मैं इस तरह के विनिर्देशों को बदलने में असमर्थ हूं और मुझे जो भी मिला है उसका उपयोग करना है, भले ही यह शायद कम सुरक्षित हो। –

उत्तर

14

किसी भी व्यक्ति के लिए धन्यवाद जिसने मेरी समस्या को देखा। मुझे लगता है कि मैंने इसे हल कर लिया है और यहां मेरा पूरा समाधान है। उम्मीद है कि यह किसी अन्य व्यक्ति की मदद करता है जिसकी समान समस्या है:

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); 

} 

और यहां नया डिक्रिप्ट फ़ंक्शन है।

function Decrypt($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); 

    $data = base64_decode($data); 

    $data = mcrypt_decrypt('tripledes', $key, $data, 'ecb'); 

    $block = mcrypt_get_block_size('tripledes', 'ecb'); 
    $len = strlen($data); 
    $pad = ord($data[$len-1]); 

    return substr($data, 0, strlen($data) - $pad); 
} 

मैं इससे पहले कि मैं mycrypt_decrypt समारोह दौड़ा सही स्वरूप में कुंजी पैदा करने के लिए एक ही कोड जोड़ने के लिए किया था।

+1

बहुत उपयोगी, धन्यवाद! –

+1

बहुत बहुत धन्यवाद! –

+1

$ डिक्रिप्ट फ़ंक्शन – omarjebari

संबंधित मुद्दे