Maison  >  Article  >  développement back-end  >  Comment utiliser le cryptage et le déchiffrement "DES-EDE-CBC" en PHP7

Comment utiliser le cryptage et le déchiffrement "DES-EDE-CBC" en PHP7

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-05-12 09:26:412241parcourir

Cet article vous présentera la méthode de cryptage et de déchiffrement utilisant "DES-EDE-CBC" en PHP7. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser le cryptage et le déchiffrement

1. Contraintes conditionnelles

La bibliothèque mcrypt couramment utilisée dans PHP5 a été supprimée sur PHP7.1+, nous utilisons donc openssl pour traiter les données. cryptage et décryptage.

La méthode de cryptage adopte la méthode DES-EDE-CBC.

La méthode de remplissage de clé est la suivante : utilisez une clé de 24 bits, effectuez d'abord une vérification MD5 sur la clé pour obtenir une chaîne de 16 bits, puis prenez les 8 premiers chiffres de la valeur de vérification MD5 de la clé et ajoutez-la à la valeur précédente derrière. Une clé de 24 bits est assemblée à partir de cela.

2. Partage de code

<?php

class DesEdeCbc {

private $cipher, $key, $iv;

/**
 * DesEdeCbc constructor.
 * @param $cipher
 * @param $key
 * @param $iv
 */
public function __construct($cipher, $key, $iv) {
$this->cipher = $cipher;
$this->key= $this->getFormatKey($key);
$this->iv = $iv;
}

/**
 * @func  加密
 * @param $msg
 * @return string
 */
public function encrypt($msg) {
$des = @openssl_encrypt($msg, $this->cipher, $this->key, OPENSSL_RAW_DATA, $this->iv);
return base64_encode($des);
}

/**
 * @func  解密
 * @param $msg
 * @return string
 */
public function decrypt($msg) {
return @openssl_decrypt(base64_decode($msg), $this->cipher, $this->key, OPENSSL_RAW_DATA, $this->iv);

}


/**
 * @func  生成24位长度的key
 * @param $skey
 * @return bool|string
 */
private function getFormatKey($skey) {
$md5Value= md5($skey);
$md5ValueLen = strlen($md5Value);
$key = $md5Value . substr($md5Value, 0, $md5ValueLen / 2);

return hex2bin($key);
}

}

$cipher = &#39;DES-EDE-CBC&#39;;
$msg = &#39;HelloWorld&#39;;
$key = &#39;12345678&#39;;
$iv  = "\x00\x00\x00\x00\x00\x00\x00\x00";

$des = new DesEdeCbc($cipher, $key, $iv);

// 加密
$msg = $des->encrypt($msg);
echo &#39;加密后: &#39; . $msg . PHP_EOL;

// 解密
$src = $des->decrypt($msg);
echo &#39;解密后: &#39; . $src . PHP_EOL;

3. Une petite explication

Vous pouvez ajuster la méthode de cryptage, la méthode de remplissage de clé et le vecteur iv en fonction de la situation réelle pour répondre à différents besoins.

Apprentissage recommandé : Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer