AES-Verschlüsselungsklassendefinition und Anwendungsbeispiele, implementiert durch PHP PHP-Kenntnisse

jacklove
Freigeben: 2023-04-02 06:16:02
Original
1471 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Definition und Verwendung der in PHP implementierten AES-Verschlüsselungsklasse vor und analysiert die Implementierung und Verwendung der auf PHP basierenden AES-Verschlüsselungsklasse in Form eines vollständigen Beispiels in diesem Artikel

Beschreibt die Definition und Verwendung der von PHP implementierten AES-Verschlüsselungsklasse. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

CryptAES.class.php-Datei:

<?php
class CryptAES
{
 protected $cipher = MCRYPT_RIJNDAEL_128;
 protected $mode = MCRYPT_MODE_ECB;
 protected $pad_method = NULL;
 protected $secret_key = &#39;&#39;;
 protected $iv = &#39;&#39;;
 public function set_cipher($cipher)
 {
 $this->cipher = $cipher;
 }
 public function set_mode($mode)
 {
 $this->mode = $mode;
 }
 public function set_iv($iv)
 {
 $this->iv = $iv;
 }
 public function set_key($key)
 {
 $this->secret_key = $key;
 }
 public function require_pkcs5()
 {
 $this->pad_method = &#39;pkcs5&#39;;
 }
 protected function pad_or_unpad($str, $ext)
 {
 if ( is_null($this->pad_method) )
 {
  return $str;
 }
 else
 {
  $func_name = __CLASS__ . &#39;::&#39; . $this->pad_method . &#39;_&#39; . $ext . &#39;pad&#39;;
  if ( is_callable($func_name) )
  {
  $size = mcrypt_get_block_size($this->cipher, $this->mode);
  return call_user_func($func_name, $str, $size);
  }
 }
 return $str;
 }
 protected function pad($str)
 {
 return $this->pad_or_unpad($str, &#39;&#39;);
 }
 protected function unpad($str)
 {
 return $this->pad_or_unpad($str, &#39;un&#39;);
 }
 public function encrypt($str)
 {
 $str = $this->pad($str);
 $td = mcrypt_module_open($this->cipher, &#39;&#39;, $this->mode, &#39;&#39;);
 if ( empty($this->iv) )
 {
  $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 }
 else
 {
  $iv = $this->iv;
 }
 mcrypt_generic_init($td, $this->secret_key, $iv);
 $cyper_text = mcrypt_generic($td, $str);
 //$rt=base64_encode($cyper_text);
 $rt = bin2hex($cyper_text);
 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);
 return $rt;
 }
 public function decrypt($str){
 $td = mcrypt_module_open($this->cipher, &#39;&#39;, $this->mode, &#39;&#39;);
 if ( empty($this->iv) )
 {
  $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 }
 else
 {
  $iv = $this->iv;
 }
 mcrypt_generic_init($td, $this->secret_key, $iv);
 $decrypted_text = mdecrypt_generic($td, self::hex2bin($str));
 //$decrypted_text = mdecrypt_generic($td, base64_decode($str));
 $rt = $decrypted_text;
 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);
 return $this->unpad($rt);
 }
 public static function hex2bin($hexdata) {
 $bindata = &#39;&#39;;
 $length = strlen($hexdata);
 for ($i=0; $i < $length; $i += 2)
 {
  $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
 }
 return $bindata;
 }
 public static function pkcs5_pad($text, $blocksize)
 {
 $pad = $blocksize - (strlen($text) % $blocksize);
 return $text . str_repeat(chr($pad), $pad);
 }
 public static function pkcs5_unpad($text)
 {
 $pad = ord($text{strlen($text) - 1});
 if ($pad > strlen($text)) return false;
 if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
 return substr($text, 0, -1 * $pad);
 }
}
?>
Nach dem Login kopieren

Verwendung:

require_once("CryptAES.class.php");
$keyStr = &#39;ss4fs4skfhksk&#39;;
$aes = new CryptAES();
$keyStr = $aes->hex2bin($keyStr);
$aes->set_key($keyStr);
$aes->require_pkcs5();
$d = $aes->encrypt($data);
Nach dem Login kopieren

Hinweis: muss in php.ini aktiviert werden: extension=php_mcrypt.dll

PS: Freunde, die sich für Ver- und Entschlüsselung interessieren, können auch auf die Online-Tools dieser Website verweisen:

Text-Online-Verschlüsselungs- und Entschlüsselungstools (einschließlich AES, DES, RC4 usw.):
http://tools.jb51.net/password/txt_encode

MD5 Online-Verschlüsselungstool :
http ://tools.jb51.net/password/CreateMD5Password

Online-Hashing/Hash-Algorithmus-Verschlüsselungstool:
http://tools.jb51 .net/password/hash_encrypt

Online MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA- 3/RIPEMD-160-Verschlüsselungstool:
http://tools.jb51.net/password/hash_md5_sha

Online sha1/sha224/sha256/sha384 /sha512-Verschlüsselungstool:
http://tools.jb51.net/password/sha_encode

Artikel, die Sie interessieren könnten:

Verhinderung der PHP-Implementierung, Cross-Site- und XSS-Angriffscode-PHP-Tipps

So installieren Sie die Yaf-Erweiterung auf einer Ubuntu-PHP-Instanz

thinkphp3.2.0 Umfassende Analyse der PHP-Instanz des Quellcodes der setInc-Methode

Das obige ist der detaillierte Inhalt vonAES-Verschlüsselungsklassendefinition und Anwendungsbeispiele, implementiert durch PHP PHP-Kenntnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage