1. Cifrado y descifrado 3des
A partir de PHP 7.2, se eliminará del código central y se trasladará a PECL. El manual de PHP ofrece una alternativa en la página de migración 7.1, que consiste en reemplazar MCrypt con OpenSSL.
Ahora resuelva el esquema de reemplazo del método de cifrado y descifrado AES mcrypt_module_open() en PHP7.2, el siguiente es el método de cifrado y descifrado original:
function encrypt($str) {
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
$encrypted = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return base64_encode($encrypted);
}
function decrypt($code) {
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
$str = mdecrypt_generic($td, base64_decode($code));
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $this->strippadding($str);
}
Después del reemplazo, el nuevo método:
//加密
public function encrypt($data)
{
if ($data== null || empty($data)) {
return $data;
}
$secret_key = "your key";
$iv = "your iv";
$result= base64_encode(openssl_encrypt( $data, "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv));
return $result;
}
//解密
public function decode($data)
{
if ($data== null || empty($data)) {
return $data;
}
$secret_key = "your key";
$iv = "your iv";
$result= openssl_decrypt(base64_decode($data), "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv);
return $result;
}
Método de cifrado:
openssl_encrypt($datos, $método, $contraseña, $opciones, $iv)
método de descifrado:
openssl_decrypt($datos, $método, $contraseña, $opciones, $iv)
descripción del parámetro:
$datos encriptados texto sin formato
$método método de encriptación
1. DES-ECB
2. DES-CBC
3. DES-CTR
4. DES-OFB
5. DES-CFB
$passwd clave de cifrado [contraseña]
$opciones opciones de formato de datos (opcional) [las opciones son:]
1. 0
2. OPENSSL_RAW_DATA=1
3. OPENSSL_ZERO_PADDING=2
4. OPENSSL_NO_PADDING=3
Vector de inicialización de cifrado $iv (opcional)
DES es un tipo común de cifrado simétrico, que es un algoritmo de bloque cifrado con una clave.
Dos, cifrado hmacsha256
Usar hash_hmac()
string hash_hmac (string $algo, string $data, string $key [, bool $raw_output = false])
parámetro
algo
El nombre del algoritmo hash a usar, por ejemplo: "md5", "sha256", "haval160,4", etc. Consulte hash_algos() para obtener una lista de algoritmos admitidos.
datos
El mensaje a hash.
llave
La clave que se utilizará al generar resúmenes de mensajes mediante HMAC.
raw_output
Establézcalo en VERDADERO para generar datos binarios sin procesar, configure en FALSO para generar una cadena hexadecimal en minúsculas.
valor devuelto
Si raw_output se establece en TRUE, devuelve el resumen de información representado por datos binarios sin formato; de lo contrario, devuelve el resumen de información expresado en formato de cadena hexadecimal en minúsculas. Devuelve FALSO si el parámetro algo especifica un algoritmo que no es compatible.