2015-07-20 4 views
2

enter image description heremcrypt_decrypt с TripleDES и CBC не работает надлежащего

Как указано выше скриншоте моих данных декодирования будет видеть, как это, когда я могу просматривать источник в браузере. в противном случае дешифровать правильно, но не хранить в сеансе должным образом из-за этой проблемы. Спасибо в Advance.

function decrypt($data, $key) {   
    $iv = chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0); //8 bytes array filled with zeros   

    $key = mb_convert_encoding($key, 'UTF-16LE'); 
    $key = md5($key, true); 
    $key = $key . $key; 
    $tripleKey = substr($key, 0, mcrypt_get_key_size(CIPHER, MODE)); 

    $decodedText = mcrypt_decrypt(CIPHER, $tripleKey, base64_decode($data), MODE, $iv); 

    // check and remove PKCS#7 padding 
    if (!$decodedText) { 
     return $decodedText; 
    } 
    $lastByte = ord($decodedText[strlen($decodedText) - 1]); 
    if ($lastByte == 0 || $lastByte > mcrypt_get_block_size(CIPHER, MODE)) { 
     return FALSE; 
    } 
    $paddingText = substr($decodedText, -$lastByte, $lastByte); 
    $decodedText = substr($decodedText, 0, -$lastByte); 
    if ($paddingText != str_repeat(chr($lastByte), $lastByte)) { 
     return FALSE; 
    } 

    return $decodedText; 
} 
+0

Пожалуйста, отправьте код. –

ответ

1

Пожалуйста, попробуйте обновить строку, как показано ниже.

$decodedText = str_replace("\0", "", $decodedText); 
return $decodedText; 
+0

Это работает, спасибо –