详尽分享记6种php加密解密方法

简介: 详尽分享记6种php加密解密方法

1.第一种

<?php

function encryptDecrypt($key, $string, $decrypt){

if($decrypt){

$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");

return $decrypted;

}else{

$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));

return $encrypted;

}//代码效果参考:http://www.ezhiqi.com/zx/art_3160.html

}

//加密:"z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk="

echo encryptDecrypt('password', 'Helloweba欢迎您',0);

//解密:"Helloweba欢迎您"

echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1);

?>

2.第二种

<?php

//加密函数

function lock_url($txt,$key='liiu'){

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";

$nh = rand(0,64);

$ch = $chars【$nh】;

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = base64_encode($txt);

$tmp = '';

$i=0;$j=0;$k = 0;

for ($i=0; $i[span style="color: rgba(0, 128, 128, 1)">strlen($txt); $i++) {

$k = $k == strlen($mdKey) ? 0 : $k;

$j = ($nh+strpos($chars,$txt【$i】)+ord($mdKey【$k++】))%64;

$tmp .= $chars【$j】;

}

return urlencode($ch.$tmp);

}

//解密函数

function unlock_url($txt,$key='liiu'){

$txt = urldecode($txt);

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";

$ch = $txt【0】;

$nh = strpos($chars,$ch);

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = substr($txt,1);

$tmp = '';

$i=0;$j=0; $k = 0;

for ($i=0; $i[span style="color: rgba(0, 128, 128, 1)">strlen($txt); $i++) {

$k = $k == strlen($mdKey) ? 0 : $k;

$j = strpos($chars,$txt【$i】)-$nh - ord($mdKey【$k++】);

while ($j<0) $j+=64;

$tmp .= $chars【$j】;

}

return base64_decode($tmp);

}

?>

3.第三种

<?php

//改进后的算法

//加密函数

function lock_url($txt,$key='str'){

$txt = $txt.$key;

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";

$nh = rand(0,64);

$ch = $chars【$nh】;

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = base64_encode($txt);

$tmp = '';

$i=0;$j=0;$k = 0;

for ($i=0; $i[span style="color: rgba(0, 128, 128, 1)">strlen($txt); $i++) {

$k = $k == strlen($mdKey) ? 0 : $k;

$j = ($nh+strpos($chars,$txt【$i】)+ord($mdKey【$k++】))%64;

$tmp .= $chars【$j】;

}

return urlencode(base64_encode($ch.$tmp));

}

//解密函数

function unlock_url($txt,$key='str'){

$txt = base64_decode(urldecode($txt));

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";

$ch = $txt【0】;

$nh = strpos($chars,$ch);

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = substr($txt,1);

$tmp = '';

$i=0;$j=0; $k = 0;

for ($i=0; $i[span style="color: rgba(0, 128, 128, 1)">strlen($txt); $i++) {

$k = $k == strlen($mdKey) ? 0 : $k;

$j = strpos($chars,$txt【$i】)-$nh - ord($mdKey【$k++】);

while ($j<0) $j+=64;

$tmp .= $chars【$j】;

}

return trim(base64_decode($tmp),$key);

}

?>

4.第四种

<?php

function passport_encrypt($txt, $key = 'liiu') {

srand((double)microtime() * 1000000);

$encrypt_key = md5(rand(0, 32000));

$ctr = 0;

$tmp = '';

for($i = 0;$i < strlen($txt); $i++) {

$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;

$tmp .= $encrypt_key【$ctr】.($txt【$i】 ^ $encrypt_key【$ctr++】);

}

return urlencode(base64_encode(passport_key($tmp, $key)));

}//代码效果参考:http://www.ezhiqi.com/bx/art_4413.html

function passport_decrypt($txt, $key = 'liiu') {

$txt = passport_key(base64_decode(urldecode($txt)), $key);

$tmp = '';

for($i = 0;$i < strlen($txt); $i++) {

$md5 = $txt【$i】;

$tmp .= $txt【++$i】 ^ $md5;

}

return $tmp;

}

function passport_key($txt, $encrypt_key) {

$encrypt_key = md5($encrypt_key);

$ctr = 0;

$tmp = '';

for($i = 0; $i < strlen($txt); $i++) {

$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;

$tmp .= $txt【$i】 ^ $encrypt_key【$ctr++】;

}

return $tmp;

}

$txt = "1";

$key = "testkey";

$encrypt = passport_encrypt($txt,$key);

$decrypt = passport_decrypt($encrypt,$key);

echo $encrypt."

";

echo $decrypt."

";

?>

5.第五种

<?php

//非常给力的authcode加密函数,Discuz!经典代码(带详解)

//函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文;$operation:DECODE表示解密,其它表示加密;$key:密匙;$expiry:密文有效期。

function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {

// 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙

$ckey_length = 4;

// 密匙

$key = md5($key ? $key : $GLOBALS【'discuz_auth_key'】);

// 密匙a会参与加解密

$keya = md5(substr($key, 0, 16));

// 密匙b会用来做数据完整性验证

$keyb = md5(substr($key, 16, 16));

// 密匙c用于变化生成的密文

$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

// 参与运算的密匙

$cryptkey = $keya.md5($keya.$keyc<span style="c

相关文章
|
7月前
|
安全 API PHP
PHP中实现CORS跨域资源共享的方法
通过这种方式,你可以在PHP应用中灵活地实现CORS,以支持跨域Web应用的需求。
535 15
|
10月前
|
存储 缓存 安全
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
483 2
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
317 28
|
PHP 开发者
PHP数据验证方法:如何检查一个字符串是否是email格式。
以上就是关于PHP如何检查一个字符串是否是email格式的全部内容。希望你在代码书写旅途中,能找到你的北斗星——简洁、高效、可靠的代码验证方式。让我们共同见证PHP的强大和丰富多彩!
303 16
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
476 16
|
Linux PHP 数据安全/隐私保护
2024授权加密系统PHP网站源码
2024授权加密系统PHP网站源码
623 58
|
存储 网络安全 数据库
YashanDB加密方法
YashanDB加密方法
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2302 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
269 12