PHP加密和解密函数
引导语:PHP可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。以下是百分网小编为大家整理的PHP加密和解密函数方法,供大家参考。
代码如下:
functionpassport_encrypt($str,$key){//加密函数
srand((double)microtime()*1000000);
$encrypt_key=md5(rand(0,32000));
$ctr=0;
$tmp='';
for($i=0;$i
$ctr=$ctr==strlen($encrypt_key)?0:$ctr;
$tmp.=$encrypt_key[$ctr].($str[$i]^$encrypt_key[$ctr++]);
}
returnbase64_encode(passport_key($tmp,$key));
}
functionpassport_decrypt($str,$key){//解密函数
$str=passport_key(base64_decode($str),$key);
$tmp='';
for($i=0;$i
$md5=$str[$i];
$tmp.=$str[++$i]^$md5;
}
return$tmp;
}
functionpassport_key($str,$encrypt_key){
$encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp='';
for($i=0;$i
$ctr=$ctr==strlen($encrypt_key)?0:$ctr;
$tmp.=$str[$i]^$encrypt_key[$ctr++];
}
return$tmp;
}
$str='作者:JB51;
$key='jb51';
$encrypt=passport_encrypt($str,$key);
$decrypt=passport_decrypt($encrypt,$key);
echo'原文:',$str."
";
echo'密文:',$encrypt."
";
echo'译文:',$decrypt."
";
?>
第2篇:PHP url 加密解密函数代码方法
复制代码代码如下:
$returnUrl=rawurlencode(base64_encode($returnUrl));//编码
$returnUrl=parse_str(base64_decode($returnUrl));//解码或者
$returnUrl=base64_decode($returnUrl);//解码
//或者
//不知道为何,上面第一种解码方式返回的是null,求解
$returnUrl=base64_encode($returnUrl);//编码
$returnUrl=base64_decode($returnUrl);//解码
这是一种方式,但是是最安全的,因为只要知道这个原理就可以解开,不过你的要求不高这样就可以了.
如果要很安全的那就要用专门的加密类了,嘻嘻.
第3篇:PHP如何使用AES加密算法进行数据加密和解密
在利用PHP制作项目的时候经常会使用AES加密算法进行数据加密和解密,那么AES加密算法是如何进行数据加密和解密的呢?下面小编为大家解答一下,希望能帮到您!
AES加密是一种高级加密标准,AES加密采用对称分组密码体制,AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。
项目中用到了AES加密和解密数据,主要用在网络请求过程中对上传的参数进行加密,对从后台服务器获取的数据进行解密。
我们可以使用AES加密算法将数据加密起来,然后发送给后端,后端再将接收的数据用约定的密钥将数据还原,即解密,Aes算法加密后的数据在传输过程中不易被*。
在PHP中,我们需要先确保php的环境中安装好了Mcrypt扩展。PHP的mcrypt库提供了对多种块算法的支持,支持CBC,OFB,CFB和ECB密码模式,mcrypt库提供了丰富的函数使用,有兴趣的同学可以查阅PHP手册。
我已经将aes加解密封装成类,方便调用,在DEMO中可以看到调用效果。
<?php
classAes
{
private$secrect_key;
publicfunction__construct($secrect_key)
{
$this->secrect_key=$secrect_key;
}
//加密
publicfunctionencrypt($str)
{
$cipher=mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,'');
$iv=$this->createIv($cipher);
if(mcrypt_generic_init($cipher,$this->pad2Length($this->secrect_key,16),$iv)!=-1){
//PHPpadswithNULLbytesif$contentisnotamultipleoftheblocksize..
$cipherText=mcrypt_generic($cipher,$this->pad2Length($str,16));
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
returnbin2hex($cipherText);
}
}
publicfunctiondecrypt($str)
{
$padkey=$this->pad2Length($this->secrect_key,16);
$td=mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,'');
$iv=$this->createIv($td);
if(mcrypt_generic_init($td,$padkey,$iv)!=-1){
$p_t=mdecrypt_generic($td,$this->hexToStr($str));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return$this->trimEnd($p_t);
}
}
//IV自动生成
privatefunctioncreateIv($td)
{
$iv_size=mcrypt_enc_get_iv_size($td);
$iv=mcrypt_create_iv($iv_size,MCRYPT_RAND);
return$iv;
}
//将$text补足$padlen倍数的长度
privatefunctionpad2Length($text,$padlen)
{
$len=strlen($text)%$padlen;
$res=$text;
$p=$padlen-$len;
for($i=0;$i<$p;$i++){
$res.=chr($p);
}
return$res;
}
//将解密后多余的长度去掉(因为在加密的时候补充长度满足block_size的长度)
privatefunctiontrimEnd($text){
$len=strlen($text);
$c=$text[$len-1];
if(ord($c)<$len){
for($i=$len-ord($c);$i<$len;$i++){
if($text[$i]!=$c){
return$text;
}
}
returnsubstr($text,0,$len-ord($c));
}
return$text;
}
//16进制的转为2进制字符串
privatefunctionhexToStr($hex){
$bin="";
for($i=0;$i<strlen($hex)-1;$i+=2){
$bin.=chr(hexdec($hex[$i].$hex[$i+1]));
}
return$bin;
}
}
调用Aes类进行加密和解密方法如下:
<?php
$key='MYgGnQE2jDFADSFFDSEWsdD2';//密钥
$str='abc';//要加密的字符串
$aes=newAes($key);
//加密
echo$aes->encrypt($str);
//解密
echo$aes->decrypt($str);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yyfangchan@163.com (举报时请带上具体的网址) 举报,一经查实,本站将立刻删除