php的mcrypt擴充套件已廢棄問題解決

2021-09-27 05:26:49 字數 1644 閱讀 7247

php 的 mcrypt_ 函式簇在 7.1.0 版本中開始 deprecated,並在 7.2.0 版本中徹底廢棄。如果當前專案存在mcrypt_ encrypt這種函式又想更新php到最新版本

官方推薦使用openssl_encrypt/openssl_decrypt替代mcrypt_encrypt和mcrypt_decrypt

mcrypt_rijndael_128 & cbc + 16位key = openssl_encrypt(aes-128-cbc, 16位key) = aes-128

mcrypt_rijndael_128 & cbc + 24位key = openssl_encrypt(aes-192-cbc, 24位key) = aes-192

mcrypt_rijndael_128 & cbc + 32位key = openssl_encrypt(aes-256-cbc, 32位key) = aes-256

我們這裡寫個例子

mcrypt**:

<?php

$key = 'keykeykey';

//注意這裡我使用的32位的key

$key = md5(md5($key) . 'salt');

$iv = md5($key, true);

$data = 'asdfgh';

$encode = mcrypt_encrypt(mcrypt_rijndael_128, $key, $data, mcrypt_mode_cfb, $iv);

$encode = base64_encode($encode);

echo $encode . php_eol;

//處理解密

$decode = mcrypt_decrypt(mcrypt_rijndael_128, $key, base64_decode($encode), mcrypt_mode_cfb, $iv);

echo $decode;

echo php_eol;

openssl**

$key = 'keykeykey';

$key = md5(md5($key) . 'salt');

$iv = md5($key, true);

$data = 'asdfgh';

$encode = openssl_encrypt($data, 'aes-256-cfb', $key, openssl_raw_data, $iv);

//完美替換$encode = mcrypt_encrypt(mcrypt_rijndael_128, $key, $data, mcrypt_mode_cfb, $iv);

$encode = base64_encode($encode);

echo $encode . '

';//解密

$decode = openssl_decrypt(base64_decode($encode), 'aes-256-cfb', $key, openssl_raw_data, $iv);

echo $decode;

重點是openssl這裡,我使用的是aes-256-cfb(因為mcrypt那裡使用的是32位的key,如果是16位的key請參考上面對應關係)

寶塔安裝php擴充套件 已mcrypt為例

2.解壓tgz包 tar xf mcrypt 1.0.3.tgz3.進入解壓好的目錄 cd mcrypt 1.0.34.生成配置檔案 由於寶塔可以有多個版本的php 所以需要對應php版本目錄下生成 www server php 73 bin phpize configure with php co...

PHP加密擴充套件庫Mcrypt

php程式設計師們在編寫 程式時,除了要保證 的高效能之外,還有一點是非常重要的,那就是程式的安全性保障。php除了自帶的幾種加密函式外,還有功能更全面的php加密擴充套件庫mcrypt和mhash。其中,mcrypt擴充套件庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。1.php加密...

PHP配置mcrypt擴充套件詳細步驟

本文大部分都是別人的,只是根據自己的使用過程加了一點說明,希望原作者不要介意。基本原理是 首先使mcrypt軟體能夠執行,然後安裝php擴充套件模組,並在php.ini配置。這裡注意的是mcrypt軟體依賴libmcrypt和mhash兩個庫,所以安裝配置順序從右至左 libmcrypt libmc...