分享几种好用的PHP自定义加密函数(可逆/不可逆)_php技巧

来源:脚本之家  责任编辑:小易  

(1)特征:雪崩效应、定长输出和不可逆。(2)作用是:确保数据的完整性。(3)加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32www.zgxue.com防采集请勿采集本网。

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这些加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。最常见的应用在用户登录以及一些API数据交换的场景。最常见的应用在用户登录以及一些API数据交换的场景。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。

用Zend的加密吧,但是还是可以解密的,这也没办法,凡是对称加密或非不可逆的加密算法,均可以解密,这只是时间问题。 特别是没有密码的加密(不可逆除外)。

u=3837593897,2803417633&fm=26&gp=0.jpg

我想我明白你的意思,但没明白你为什么要这么做PHP的代码,在浏览器前台是看不到的,如果打开你的网页,其中有上面一段代码的话,通查看源代码,只能看到“

废话不多说,直接上代码。

虽然不懂可逆是什么,不过我推荐一种加常量的方法,相对比较安全的。 define(“ABC”,“123456789”); md5('1."constant('ABB')");

一、第一种针对于ID的可逆加密函数,也可以用作于邀请码之类的,解密后的数据比较简单

在使用PHP开发Web应用的中,很多的应用都会要求用户注册,而注册的时候就需要我们对用户的信息进行处理了,最常见的莫过于就是邮箱和密码了,本文意在讨论对

示例:lockcode(28)=》000X unlockcode('000X')=》28

将整个代码进行加密这个玩意估计还没人想过 因为需要将代码本身保密化的只有一些需要在本地运行的软件。想php这样运行在服务器端的,除非人家黑了你的服务

//加密函数function lockcode($code) { static $source_string = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ'; $num = $code; $code = ''; while ( $num > 0) { $mod = $num % 35; $num = ($num - $mod) / 35; $code = $source_string[$mod].$code; } if(empty($code[3])) $code = str_pad($code,4,'0',STR_PAD_LEFT); return $code;}//解密函数function unlockcode($code) { static $source_string = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ'; if (strrpos($code, '0') !== false) $code = substr($code, strrpos($code, '0')+1); $len = strlen($code); $code = strrev($code); $num = 0; for ($i=0; $i < $len; $i++) { $num += strpos($source_string, $code[$i]) * pow(35, $i); } return $num;}

二、第二种是加密函数是我在网上搜索来的,很好用,可逆加密,支持盐值参数

示例:encrypt('abcd','1234')=》nkiV93IfJ decrypt('nkiV93IfJ','1234')=》abcd

//加密函数 function encrypt($data,$key='CHENI'){ $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $nh = rand(0,64); $ch = $chars[$nh]; $mdKey = md5($key.$ch); $mdKey = substr($mdKey,$nh%8, $nh%8+7); $data= base64_encode($data); $tmp = ''; $i=0;$j=0;$k = 0; for ($i=0; $i<strlen($data); $i++) { $k = $k == strlen($mdKey) ? 0 : $k; $j = ($nh+strpos($chars,$data[$i])+ord($mdKey[$k++]))%64; $tmp .= $chars[$j]; } return urlencode($ch.$tmp); }//解密函数 function decrypt($data,$key='CHENI'){ $txt = urldecode($data); $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<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); }

三、第三种跟上面的比较类似,也支持盐值参数

示例:encrypt('abcd','1234')=》mZPHxw== decrypt('mZPHxw==','1234')=》abcd

function encrypt($data, $key) { $char=""; $str=""; $key = md5($key); $x = 0; $len = strlen($data); $l = strlen($key); for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= $key{$x}; $x++; } for ($i = 0; $i < $len; $i++){ $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256); } return base64_encode($str); } function decrypt($data, $key) { $key = md5($key); $x = 0; $data = base64_decode($data); $len = strlen($data); $l = strlen($key); for ($i = 0; $i < $len; $i++) { if ($x == $l){ $x = 0;} $char .= substr($key, $x, 1); $x++; } for ($i = 0; $i < $len; $i++){ if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))){ $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); }else{ $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); } } return $str; }

四、这个是我用过最好用的一个了,discuz中使用的加密解密算法

//加密算法 function authcode($string,$key='',$operation=false,$expiry=0){ $ckey_length = 4; $key = md5($key ? $key : DEFAULT_KEYS); $keya = md5(substr($key, 0, 16)); $keyb = md5(substr($key, 16, 16)); $keyc = $ckey_length ? ($operation? substr($string, 0, $ckey_length):substr(md5(microtime()), -$ckey_length)) : ''; $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); $string = $operation? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $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 = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation) { if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { return $keyc.str_replace('=', '', base64_encode($result)); } } echo authcode('123456','key'); echo '<br>'; echo authcode('7d49kn9k07uSBZvha8as+/qm4UoLfpy88PFg12glPeDtlzc','key',true);

以上几种都是比较好用且是我自己常用的分享给大家,大家如果想要了解其他的加密函数或者有什么建议可以在底部留言。 您可能感兴趣的文章:基于PHP实现解密或加密Cloudflar邮箱保护php中加密解密DES类的简单使用方法示例php的RSA加密解密算法原理与用法分析PHP实现的XXTEA加密解密算法示例PHP实现基于3DES算法加密解密字符串示例php实现的rc4加密解密类定义与用法示例PHP实现的AES加密、解密封装类与用法示例PHP使用自定义key实现对数据加密解密的方法php自定义加密与解密程序实例

最常用的就2113是base64加密5261,可以多次加密,可以加密后拼接或者变换字4102符串后再加密1653,这个过程别人是不知道的,就不可能破解了。但重点不是这个,重点是加密的思路,你那样做的话,只要人家有你的本地系统,就可以随便看了,不安全埃我想这些东西本回答被网友采纳内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php5.5基于mysqli连接mysql数据库和读取数据操作实例详解
  • php简单判断手机设备的方法
  • php中的extract的作用分析
  • php绘图之生成饼状图的方法
  • php7下安装event扩展方法
  • 浅析php数据导出知识点
  • 基于php split()函数的用法详解
  • php+ajax分页实例简析
  • php实现的redis操作通用类示例
  • php使用两个栈实现队列功能的方法
  • php有没有不可逆的加密方法
  • PHP的几个常用加密函数
  • php有没有可逆加密解密函数,不要base64,最好是能...
  • 有没有可逆的,定长的,PHP的加密解密例子
  • 怎样给php源代码加密
  • 求php加密算法,
  • php纯数字加密为可逆的定长密文
  • php代码怎么加密最好,不能破解的那种
  • php怎么实现加密?简单的那种 而且用的时候不需要解密
  • PHP或JAVA可逆加密,要安全的,谁有方法
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php技巧基于php实现解密或加密cloudflar邮箱保护php中加密解密des类的简单使用方法示例php的rsa加密解密算法原理与用法分析php实现的xxtea加密解密算法示例php实现基于3des算法加密解密字符串示例php实现的rc4加密解密类定义与用法示例php实现的aes加密、解密封装类与用法示例php使用自定义key实现对数据加密解密的方法php自定义加密与解密程序实例php5.5基于mysqli连接mysql数据库和读取数据操作实例详解php简单判断手机设备的方法php中的extract的作用分析php绘图之生成饼状图的方法php7下安装event扩展方法浅析php数据导出知识点基于php split()函数的用法详解php+ajax分页实例简析php实现的redis操作通用类示例php使用两个栈实现队列功能的方法php中json_decode()和json_encodphp 数组和字符串互相转换实现方php中使用curl实现get和post请求php中iconv函数使用方法php日期转时间戳,指定日期转换成php 页面跳转到另一个页面的多种php中文处理 中文字符串截取(mb_php 字符串中是否包含指定字符串php下intval()和(int)转换使用与利用phpexcel实现excel数据的导入linux下为php添加curl扩展的方法php 地区分类排序算法php数据库表操作的封装类及用法实例详解php使用mongoclient简单操作mongodb数据库用来给图片加水印的php类php实现数组array转换成xml的方法支持png透明图片的php生成缩略图类分享超强多功能php绿色集成环境详解php中散列密码的安全性分析php下通过ip获取地理位置的代码(小偷程序
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved