Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Beispiele für PHP-Verschlüsselungs- und -Entschlüsselungsklassen

Detaillierte Erläuterung der Beispiele für PHP-Verschlüsselungs- und -Entschlüsselungsklassen

墨辰丷
墨辰丷Original
2018-06-01 17:15:211579Durchsuche

Dieser Artikel enthält hauptsächlich relevante Informationen zu Beispielen für PHP-Verschlüsselungs- und -Entschlüsselungsklassen. Er ist sehr gut und hat Referenzwert.

Der Schlüsselcode lautet folgt:

<?php
function i_array_column($input, $columnKey, $indexKey=null){
if(!function_exists(&#39;array_column&#39;)){
$columnKeyIsNumber = (is_numeric($columnKey))?true:false;
$indexKeyIsNull = (is_null($indexKey))?true :false;
$indexKeyIsNumber = (is_numeric($indexKey))?true:false;
$result = array();
foreach((array)$input as $key=>$row){
if($columnKeyIsNumber){
$tmp= array_slice($row, $columnKey, 1);
$tmp= (is_array($tmp) && !empty($tmp))?current($tmp):null;
}else{
$tmp= isset($row[$columnKey])?$row[$columnKey]:null;
}
if(!$indexKeyIsNull){
if($indexKeyIsNumber){
$key = array_slice($row, $indexKey, 1);
$key = (is_array($key) && !empty($key))?current($key):null;
$key = is_null($key)?0:$key;
}else{
$key = isset($row[$indexKey])?$row[$indexKey]:0;
}
}
$result[$key] = $tmp;
}
return $result;
}else{
return array_column($input, $columnKey, $indexKey);
}
}
function randcode($len, $mode = 2){
$rcode = &#39;&#39;;
switch($mode){
case 1: //去除0、o、O、l等易混淆字符
$chars = &#39;ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnpqrstuvwxyz&#39;;
break;
case 2: //纯数字
$chars = &#39;0123456789&#39;;
break;
case 3: //全数字+大小写字母
$chars = &#39;ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz&#39;;
break;
case 4: //全数字+大小写字母+一些特殊字符
$chars = &#39;ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()&#39;;
break;
}
$count = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $len; $i++) {
$rcode .= $chars[mt_rand(0, $count)];
}
return $rcode;
}
/**
* $string 明文或密文
* $operation 加密ENCODE或解密DECODE
* $key 密钥
* $expiry 密钥有效期
*/
function authcode($string, $operation = &#39;DECODE&#39;, $key = &#39;&#39;, $expiry = 0) {
$ckey_length = 4;
$key = md5($key);
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($operation == &#39;DECODE&#39; ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : &#39;&#39;;
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = $operation == &#39;DECODE&#39; ? base64_decode(substr($string, $ckey_length)) : sprintf(&#39;%010d&#39;, $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = &#39;&#39;;
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if($operation == &#39;DECODE&#39;) {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return &#39;&#39;;
}
} else {
return $keyc.str_replace(&#39;=&#39;, &#39;&#39;, base64_encode($result));
}
}

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er kann für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

phpDetaillierte Erläuterung der Nachrichtengruppen-Sendefunktion für öffentliche WeChat-Kontovorlagen

So verwenden Sie PHP, um wiederholte Formularübermittlungen zu verhindern

So verwenden Sie thinkPHP, um das Konto nach drei falschen Anmeldekennwörtern zu sperren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für PHP-Verschlüsselungs- und -Entschlüsselungsklassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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