PHP usa cifrado y descifrado 3des, cifrado hmacsha256

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.

Supongo que te gusta

Origin blog.csdn.net/qq_36611673/article/details/125162556
Recomendado
Clasificación