php实现加密示例

本文实例陈述了php加密之discuz内容精华加密方法。分享给大家供我们参照他事他说加以考察,具体如下:

PHP达成的单向散列加密操作示例,php实现加密示例

正文实例呈报了PHP完毕的单向散列加密操作。分享给大家供我们参谋,具体如下:

1.加密文件

<?php
//sha1_en.php
header("content-type:text/html;charset=utf-8");
$str = "我是张三,能给我个人数据吗";
$salt="123456";//我是唯一不变的salt
$sha1=sha1($str.$salt);//或者$sha1=md5($str.$salt);
echo $str;
echo "<br/>";
echo $sha1;
echo "<br/>";
echo "http://localhost//sha1_de.php?str=$str&sha1=$sha1";
?>

2.解密文件

<?php
//sha1_de.php
header("content-type:text/html;charset=utf-8");
$str=$_GET["str"];
$sha1=$_GET["sha1"];
$salt="123456";//我是唯一不变的salt
$verify=sha1($str.$salt);//或者$verify=md5($str.$salt);
echo $verify;
if($verify==$sha1){
  echo "你是张三,给你信息";
}else{
  echo "你是假冒伪劣产品";
  echo "你的ip".$_SERVER['REMOTE_ADDR']."已经被记录了";
}
?>

PS:关于加密解密感兴趣的对象还足以仿效本站在线工具:

文字在线加密解密工具(富含AES、DES、RC4等):

MD5在线加密工具:

在线散列/哈希算法加密工具:

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/奥迪Q5IPEMD-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

更多关于PHP相关内容感兴趣的读者可查看本站专项论题:《php加密方法总括》、《PHP编码与转码操作本事汇总》、《PHP数学生运动算本事总计》、《PHP数组(Array卡塔尔国操作技巧大全》、《php字符串(string卡塔尔国用法计算》、《PHP数据结构与算法教程》、《php程序设总括法总括》及《php正则表达式用法总括》

意在本文所述对大家PHP程序设计有着协理。

本文实例汇报了PHP达成的单向散列加密操作。分享给我们供我们仿照效法,具体如下:
1.加密…

导读:一时,咱们愿意对表里的一点敏感字段举办加密,想了好长期未有比较好的建设方案,后台在网络查了查,放心discuz论坛的这种方案对这种景况解决的不易,特copy过来,给大家分享一下,代码如下:

header ( "Content-type:text/html;charset=UTF-8" );echo $string='花园路888号';echo '加密有效期10秒,密文内容:';// $string='1111';$sss=authcode;echo $sss;echo '加密后立即解密:...';echo authcode;echo '6秒后解密...';$aaaa=authcode;sleep;echo '再次5秒后解密...';$aaaa=authcode;/** * * @param string $string 明文或密文字符串 * @param string $operation DECODE表示解密,其它表示加密 * @param string $key 密钥 * @param int $expiry 密文有效期,0代码永不过期 * @return string */function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5 ( $key ? $key : $GLOBALS ['discuz_auth_key'] ); // 密匙a会参与加解密 $keya = md5 ( substr ; // 密匙b会用来做数据完整性验证 $keyb = md5 ( substr ; // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr ( $string, 0, $ckey_length ) : substr , - $ckey_length )) : ''; // 参与运算的密匙 $cryptkey = $keya . md5 ; $key_length = strlen ; // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb,解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $string = $operation == 'DECODE' ? base64_decode ( substr ( $string, $ckey_length ) ) : sprintf ( '0d', $expiry ? $expiry + time  . substr ( md5 , 0, 16 ) . $string; $string_length = strlen ; $result = ''; $box = range ; $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 =  % 256; $j =  % 256; $tmp = $box [$a]; $box [$a] = $box [$j]; $box [$j] = $tmp; // 从密匙簿得出密匙进行异或,再转成字符 $result .= chr  ^ ($box [($box [$a] + $box [$j]) % 256]) ); } if ($operation == 'DECODE') { // substr == 0 验证数据有效性 // substr - time() > 0 验证数据有效性 // substr == substr(md5.$keyb), 0, // 16) 验证数据完整性 // 验证数据有效性,请看未加密明文的格式 if ((substr  == 0 || substr  - time  && substr  == substr ( md5 ( substr  . $keyb ), 0, 16 )) { return substr ; } else { return ''; } } else { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc . str_replace ( '=', '', base64_encode ; }}

花园路888号加密有效期10秒,密文内容:ce9eelLd6jpd7hZJTRg+/fgg8cD9VG+1NsHvkavEKhdvhk7jcfDoQTYSAAw加密后立即解密:...花园路888号6秒后解密...string'花园路888号' 再次5秒后解密...string'' 

PS:关于加密解密感兴趣的爱侣还足以参见本站在线工具:

MD5在线加密工具:

迅雷、快车、旋风UXC60L加密/解密工具:

发表评论

电子邮件地址不会被公开。 必填项已用*标注