Maison  >  Article  >  développement back-end  >  classe de chiffrement aes implémentée par php

classe de chiffrement aes implémentée par php

怪我咯
怪我咯original
2017-07-13 10:10:142635parcourir

Advanced Encryption Standard (anglais : Advanced Encryption Standard, abréviation : AES), également connue sous le nom de méthode de cryptage Rijndael en cryptographie, est une norme de cryptage par blocs adoptée par le gouvernement fédéral américain. Cette norme est utilisée pour remplacer le DES original. Elle a été analysée par de nombreuses parties et est largement utilisée dans le monde. Après un processus de sélection de cinq ans, l'Advanced Encryption Standard a été publiée par le National Institute of Standards and Technology (NIST) dans la publication FIPS PUB 197 le 26 novembre 2001 et est devenue une norme en vigueur le 26 mai 2002. En 2006, Advanced Encryption Standard est devenu l’un des algorithmes les plus populaires pour le chiffrement à clé symétrique. Cet article présente principalement la classe de cryptage AES implémentée en PHP. Il existe des méthodes d'utilisation dans le code. Les amis qui en ont besoin peuvent s'y référer

<?php
class AESMcrypt {

 public $iv = null;
 public $key = null;
 public $bit = 128;
 private $cipher;

 public function construct($bit, $key, $iv, $mode) {
  if(empty($bit) || empty($key) || empty($iv) || empty($mode))
  return NULL;

  $this->bit = $bit;
  $this->key = $key;
  $this->iv = $iv;
  $this->mode = $mode;

  switch($this->bit) {
   case 192:$this->cipher = MCRYPT_RIJNDAEL_192; break;
   case 256:$this->cipher = MCRYPT_RIJNDAEL_256; break;
   default: $this->cipher = MCRYPT_RIJNDAEL_128;
  }

  switch($this->mode) {
   case &#39;ecb&#39;:$this->mode = MCRYPT_MODE_ECB; break;
   case &#39;cfb&#39;:$this->mode = MCRYPT_MODE_CFB; break;
   case &#39;ofb&#39;:$this->mode = MCRYPT_MODE_OFB; break;
   case &#39;nofb&#39;:$this->mode = MCRYPT_MODE_NOFB; break;
   default: $this->mode = MCRYPT_MODE_CBC;
  }
 }

 public function encrypt($data) {
  $data = base64_encode(mcrypt_encrypt( $this->cipher, $this->key, $data, $this->mode, $this->iv));
  return $data;
 }

 public function decrypt($data) {
  $data = mcrypt_decrypt( $this->cipher, $this->key, base64_decode($data), $this->mode, $this->iv);
  $data = rtrim(rtrim($data), "\x00..\x1F");
  return $data;
 }

}
//使用方法
$aes = new AESMcrypt($bit = 128, $key = &#39;abcdef1234567890&#39;, $iv = &#39;0987654321fedcba&#39;, $mode = &#39;cbc&#39;);
$c = $aes->encrypt(&#39;haowei.me&#39;);
var_dump($aes->decrypt($c));
.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn