Neden bu garip karakterler mcrypt görünüyor?

4 Cevap php

I Encrypt and Decrypt successfully, but when I decrypt the value, appears strange characters at the final of string "���": The initial $_POST['value'] do not have any blank space or any strange character

Bunu çözmek için herhangi bir fikir?

Bu şifrele:

$key='my key';
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);    	
$id = mcrypt_generic($td, $_POST['value']);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

Bu ile azalmak:

$key='my key';
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$id = mdecrypt_generic($td, $_COOKIE['value']);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

4 Cevap

Bu unicode varlıklardır. Çıkışta utf8_decode () deneyin.

A related closed PHP Bug Orada da

mcrypt produces binary output which is neither iso-8859-1 nor utf-8 therefore you should tell your database that that data is binary stuff, not text data.

Ben de mcrypt example page. bu bilgi bulundu

I could En/Decrypt within VB and PHP just fine But when I tried to encrypt one in VB and decrypt in PHP I got the wrong values with the mcrypt function alone

Ben en azından VB9 ile akış şifreleme 8 bit akışında sol kaç eksik bayt için değeri bir UTF karakter kullanır bulundu.

So if you encrypt 1234 it will add chr(4) four times (the amount of missing bytes) In php use chr otherwise most browsers/client cant read it. Im not good at explaining things but the php code I figured out is below.

Sadece kullanılan blok boyutuna göre sonuç doldurma. Eğer rtrim () kullanırsanız, onlardan kurtulmak olacaktır.

Isimli VB (şifresini) PHP (şifrelemek) ve PHP ve sayfa utf-8 ve veritabanı utf-8 ve UTF-8 conection değildir.

Isimli tüm, ben 2 passprases, ilk sahip tuhaf karakterleri ve son yoktur şifrelemek değil, tüm değerler aynı gelen POST vardır.

Deşifre metin için aşağıdaki işlevini kullanın

function pkcs5_unpad($text)
{
    $pad = ord($text{strlen($text)-1});
    if ($pad > strlen($text)) return false;
    if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
    return substr($text, 0, -1 * $pad);
}