Maison  >  Article  >  développement back-end  >  Principes et utilisation du chiffrement et du déchiffrement en PHP

Principes et utilisation du chiffrement et du déchiffrement en PHP

墨辰丷
墨辰丷original
2018-06-11 14:36:183048parcourir

Cet article présente principalement la classe de cryptage et de décryptage PHP. Il analyse les principes et les techniques associées de cryptage et de décryptage en PHP avec des exemples. Il est d'une grande valeur pratique. Les amis qui en ont besoin peuvent s'y référer. 🎜>Cet article décrit PHP avec des exemples de classes de chiffrement et de décryptage. L'analyse spécifique est la suivante :

Ce code prend en charge le cryptage de tableau, la période de validité du texte chiffré et divers cryptages symétriques

Les paramètres sont les suivants :

* @use ption : :en($ string, $key);

* @param String $string chaîne à chiffrer

* @param String $skey key
* @param int $période de validité du texte chiffré d'expiration, valable pendant le chiffrement, en secondes, 0 est valide en permanence
* @return String

1. Le code php est le suivant :

2. 🎜>
/*
 * -工具库-加密解密码
*/
class ption
{
 private static $original = array('=', '+', '/');
 private static $later = array('O0O0O', 'o0O0o', 'oo00o');
 function __construct()
 {
 }
 private static function md5($skey = '')
 {
  $skey = $skey ? $skey : 'ui' ; //uicms::_config('security/authkey');
  return md5(substr($skey, 0, 16));
 }
 /**
 * @use ption::en($string, $key);
 * @param String $string 需要加密的字串
 * @param String $skey 密钥
 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效
 * @return String
 */
 static public function en($string = '', $skey = '', $expiry=0)
 {   
  if( is_array( $string ) )
  {
   $string = json_encode($string); // uicms::json($string, true, 'en');
  }     
  $string = str_pad($expiry ? $expiry + TIME : 0, 10, 0).$string;  
  $strArr = str_split(base64_encode($string));
  $strCount = count($strArr);  
  $skey = static::md5($skey);  
  foreach (str_split($skey) as $key => $value)
  {
   $key < $strCount && $strArr[$key].=$value;
  }
  return str_replace(self::$original, self::$later, join(&#39;&#39;, $strArr));
 }
 /**
 * @use ption::de($string, $key);
 * @param String $string 需要解密的字串
 * @param String $skey 密钥
 * @return String
 */
 static public function de($string = &#39;&#39;, $skey = &#39;&#39;)
 {   
  $strArr = str_split(str_replace(self::$later,self::$original,$string),2);
  $strCount = count($strArr);
  $skey = static::md5($skey);
  foreach (str_split($skey) as $key => $value)
  {
   $key < $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
  }   
  $result = base64_decode(join(&#39;&#39;, $strArr));
  if(substr($result, 0, 10) == 0 || substr($result, 0, 10) - TIME > 0)
  {
   return substr($result, 10);
  }
  else
  {
   return false;
  }   
 }  
}

Résumé

 : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
$str[&#39;username&#39;] = &#39;oschina&#39;;
$str[&#39;pw&#39;] = &#39;123456&#39;;
$str[&#39;huoxin&#39;] = &#39;!@#$%^&&#39;;
echo "string : " . $str . " <br />";
echo "encode : " . ($enstring = ption::en($str)) . &#39;<br />&#39;;
echo "decode : " . ption::de($enstring);

Recommandations associées :

Connaissance de base du flux PHP

PHP se connecte aux effets Baidu via des appels Ajax à réaliser la détection Fonction permettant de savoir si le site Web est connecté à Internet

Opérateur ternaire de 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:
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