原创

PHP 实现加密和解密讲解

PHP 是一种通用开源脚本语言,主要适用于Web开发领域,独特的语法混合了C、Java、Perl以及PHP自创的语法,可以比CGI或者Perl更快速地执行动态网页,本文利用可逆转 base64_encode 和 base64_decode (base64_encode()、urlencode() 相对应的解密函数:base64_decode() 、urldecode() 

base64_encode() 将字符串以 MIME BASE64 编码)实现加密和解密。

加密函数,具体代码如下:

/* 
 * 加密 
 * str 需要加密的内容 
 * key 密钥 
 */
function passport_encrypt($str,$key){ 
  srand((double)microtime() * 1000000); 
  $encrypt_key=md5(rand(0, 32000));
  $ctr=0; 
  $tmp=''; 
  for($i=0;$i<strlen($str);$i++){ 
    $ctr=$ctr==strlen($encrypt_key)?0:$ctr; 
    $tmp.=$encrypt_key[$ctr].($str[$i] ^ $encrypt_key[$ctr++]); 
  } 
  return base64_encode(passport_key($tmp,$key)); 
}

解密函数,具体代码如下:

/* 
 * 字符串进行解密处理 
 * 需要解密的密文内容 
 * 密钥 
 */
function passport_decrypt($str,$key){
  $str=passport_key(base64_decode($str),$key); 
  $tmp=''; 
  for($i=0;$i<strlen($str);$i++){ 
    $md5=$str[$i]; 
    $tmp.=$str[++$i] ^ $md5; 
  } 
  return $tmp; 
}
function passport_key($str,$encrypt_key){ 
  $encrypt_key=md5($encrypt_key); 
  $ctr=0; 
  $tmp=''; 
  for($i=0;$i<strlen($str);$i++){ 
    $ctr=$ctr==strlen($encrypt_key)?0:$ctr; 
    $tmp.=$str[$i] ^ $encrypt_key[$ctr++]; 
  } 
  return $tmp; 
}

测试函数,具体代码如下:

$str='欢迎收藏 www.yoodb.com'; 

$key='yoodb'; 
$encrypt=passport_encrypt($str,$key); 
$decrypt=passport_decrypt($encrypt,$key); 

echo '原文:',$str."<br>"; 
echo '密文:',$encrypt."<br>"; 
echo '译文:',$decrypt."<br>";
~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信