原创

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),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信