यहाँ एक PHP डेमो स्क्रिप्ट एन्क्रिप्ट करता है और decrypts है डेटा:mcrypt_encrypt() मेरी स्ट्रिंग के अंत में बाइनरी वर्ण क्यों डाल रहा है?
<?
$encryptionkey = 'h8y2p9d1';
$card_nbr = "1234";
echo "original card_nbr: $card_nbr <br>\n";
$card_nbr_encrypted=encrypt_data($card_nbr);
echo "card_nbr_encrypted: $card_nbr_encrypted <br>\n";
$card_nbr_decrypted=decrypt_data($card_nbr_encrypted);
echo "card_nbr_decrypted: $card_nbr_decrypted <br>\n";
$len=strlen($card_nbr_decrypted);
echo "length: $len <br>\n";
function encrypt_data($text){
global $encryptionkey;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_text = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $encryptionkey, $text, MCRYPT_MODE_ECB, $iv);
return $encrypted_text;
}
function decrypt_data($text){
global $encryptionkey;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_text = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $encryptionkey, $text, MCRYPT_MODE_ECB, $iv);
return $decrypted_text;
}
?>
उत्पादन होता है:
original card_nbr: 1234
card_nbr_encrypted: vY¨(Z$<§G3-žÃ-Éù3Ý2Ê×rz¨VÛ
card_nbr_decrypted: 1234 (and 28 binary characters)
length: 32
उत्पादन सफलतापूर्वक decrypted है, लेकिन 28 बाइनरी वर्ण से जुड़ जाते हैं समाप्त। HTML स्रोत को देखते समय इसे फ़ायरफ़ॉक्स में आसानी से देखा जा सकता है। 32 की स्ट्रिंग लंबाई भी यह दर्शाती है। कोई विचार?
देखें कि क्या यह किसी भी मदद की जा सकती है http://php.net/manual/en/function.base64-encode.php –
@Mian_Khurram_Ijaz मुझे नहीं लगता कि यह – Ben
में मदद करेगा क्यों आउटपुट वास्तव में बाइनरी प्रारूप में है इसलिए इसे नेटवर्क बेस 64_encode में सुरक्षित बनाने के लिए एन्क्रिप्ट और डिक्रिप्ट ठीक काम कर रहा है, इसलिए मैंने सोचा कि बाइनरी वर्ण समस्या है तो बेस 64 का उपयोग करें .. –