Note that there are some explanatory texts on larger screens.

plurals
  1. POCharacter encoding changes after exploding
    primarykey
    data
    text
    <p>I'm trying this script but the character encoding keeps changing:</p> <pre><code> $v1 = "text1"; $v2 = "text2"; $v3 = "text3"; $result = encrypt($v1 . ":" . $v2 . ":" . $v3, SALT); $result = decrypt($result , SALT); list($v1, $v2, $v3) = explode(":", $result); echo mb_detect_encoding($v1); // gives ASCII echo mb_detect_encoding($v2); // gives ASCII echo mb_detect_encoding($v3); // gives UTF-8 &lt;&lt;&lt;&lt; </code></pre> <p>BUT by adding another var it gives:</p> <pre><code> $v1 = "text1"; $v2 = "text2"; $v3 = "text3"; $result = encrypt($v1 . ":" . $v2 . ":" . $v3. ":COTROLFLAG", SALT); $result = decrypt($result , SALT); list($v1, $v2, $v3, $v4) = explode(":", $result); echo mb_detect_encoding($v1); // gives ASCII echo mb_detect_encoding($v2); // gives ASCII echo mb_detect_encoding($v3); // gives ASCII &lt;&lt;&lt;&lt; echo mb_detect_encoding($v4); // gives ASCII </code></pre> <p>Can any one help me?</p> <p>These are the encrypt and decrypt functions:</p> <pre><code> function encrypt($str, $key) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $block = mcrypt_get_block_size('des', 'ecb'); if (($pad = $block - (strlen($str) % $block)) &lt; $block) { $str .= str_repeat(chr($pad), $pad); } $result = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_ECB, $iv)); return $result; } function decrypt($str, $key) { $str = base64_decode($str); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_ECB, $iv); $block = mcrypt_get_block_size('des', 'ecb'); $pad = ord($str[($len = strlen($str)) - 1]); if ($pad &amp;&amp; $pad &lt; $block &amp;&amp; preg_match('/' . chr($pad) . '{' . $pad . '}$/i', $str)) { return substr($str, 0, strlen($str) - $pad); } return $str; } </code></pre> <hr> <p>after the first answer i knew where i should search for a solution..</p> <p>I found this to pad and strip:</p> <pre><code>function addpadding($string, $blocksize = 32){ $len = strlen($string); $pad = $blocksize - ($len % $blocksize); $string .= str_repeat(chr($pad), $pad); return $string; } function strippadding($string){ $slast = ord(substr($string, -1)); $slastc = chr($slast); $pcheck = substr($string, -$slast); if(preg_match("/$slastc{".$slast."}/", $string)){ $string = substr($string, 0, strlen($string)-$slast); return $string; } else { return false; } } </code></pre> <p>The changed encryption and decryption functions:</p> <pre><code>function encrypt($str, $key) { global $domain; $key = base64_decode($key); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); setcookie("IV_CODE", $iv, time()+86400, "/", $domain);//more security $enc = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, addpadding($str), MCRYPT_MODE_CBC, $iv)); return $enc; } function decrypt($str, $key) { $str = base64_decode($str); $iv = (isset($_COOKIE['IV_CODE'])) ? base64_decode($_COOKIE['IV_CODE']) : 0; if ($iv != 0) { $key = base64_decode($key); $dec = strippadding(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_CBC, $iv)); return $dec; } return false; } </code></pre> <p>thank you</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload