2017-01-19 73 views
10

Mcrypt işlevi, PHP 7.1.0'dan itibaren kullanımdan kaldırılmıştır.PHP7.1 mcrypt alternatifi

My kaldırılmış dize şifreleme/şifre çözme fonksiyonları:

$key: secret key 
$str: string 


$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key)))); 

$decoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($str), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); 

bazı alternatifler önerebilir misiniz?

+0

Burada şans bitti:

kamu özünü bakın. Çok alışılmamış ve OpenSSL tarafından desteklenmeyen bir Rijndael-256 şifresi kullanıyorsunuz. Muhtemelen, 256 bit anahtarla Rijndael-128 olan AES-256'dır. Anahtarlama şifreleri sizin için bir seçenekse, Rijndael-128'e geçin, bu durumda OpenSSL'yi kullanabilirsiniz. – NikiC

+0

neden sadece sha-256 * (sha version 2) kullanmıyoruz * – TheCrazyProfessor

+0

Olası kopya [mcrypt kullanımdan kaldırıldı, alternatif nedir?] (Https://stackoverflow.com/questions/41272257/mcrypt-is-deprecated-what -is-the-alternative) – kenorb

cevap

13

Bunun yerine openssl_encrypt kullanmalısınız. Saygılarımızla!

+0

Şifrele örneği: http://micmap.org/php-by-example/en/function/openssl_encrypt, Örnek şifresini çözme: http://micmap.org/php-by-example/en/ fonksiyonu/openssl_decrypt – mghhgm

1

defuse veya RNCryptor'u kullanmayı düşünün, eksiksiz bir çözüm sağlarlar, korunur ve doğrudur.

0

Yukarıda belirtildiği gibi, open_ssl, mcrypt için iyi bir alternatiftir. open_ssl ile olan tek sorun, geniş dizeler için kullanılamaz olmasıdır.

Bu sorunu aşan bir komut dosyası (statik sınıf) yazdım (büyük dizeler parçalara ayrılır ve arka planda ayrı ayrı şifreli/şifresi çözülür). https://gist.github.com/petermuller71/33616d55174d9725fc00a663d30194ba