php加密

php常用加密函数和算法

♀尐吖头ヾ 提交于 2020-03-19 03:12:10
关键词: 不可逆: md5(); 计算字符串的 MD5 散列值 不可逆 默认返回32位的16进制 crypt(); 单向字符串散列 可以混淆盐值 不可逆 sha1(); 计算字符串的 sha1 散列值 默认返回值是一个 40 字符长度的十六进制数字。 不可逆 hash() hash($ago,$data); $ago是可以指定加密使用的哈希算法,例如:"md5","sha256","haval160,4" 等。$data是要加密的数据 不可逆 password_hash() – 对密码加密. $hash = password_hash($passwod, PASSWORD_DEFAULT); 现在PHP的官方都是推荐这种方式来加密用户的密码,很多流行的框架比如Laravel就是用的这种加密方式。 可逆: URL编码加密 urlencode() urldecode() url传递 保护特殊字符串使用 $str=" http://guojiadong.com?name= ".urlencode('guojiadong&123'); 可逆 Base64编码加密 base64_encode() base64_decode() base64加密本质上说就是把数据转换为ASCLL码 ,这会更有利于文件的传输,当然base64的作用在与文件的传输 可逆 PHP的openssl扩展

php加密解密函数

我的未来我决定 提交于 2020-03-18 08:34:40
/** *加密解密函数 *@param string $string 需要加密或者解密的函数 *@param string $operation 加密或者解密 DECODE为解密、其他为加密 *@param string $key 秘钥 *@param int $expiry 秘钥有效期 */ public static function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。 // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方 // 当此值为 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

php加速运行优化

三世轮回 提交于 2020-03-16 08:11:28
一个系统的运行性能,除了程序本身要写的完善,还有要看php本身的一些问题,对于php的运行优化,主要有这些加速器:wincache,xcache,ZendOPcache,eAccelerator加速器等; Wincache:( Xee : 微软的官网 ) wincache仅适应iis下搭建PHP,若是在windows下面运行其它php web服务器 wincache不是很好,可以考虑使用zend效果会更好(php5.5版本已经整合zend opache)。 大家都觉得在PHP在windows下远不如在linux下运行的好,于是微软就推出了WinCache Extension for PHP这款程序,目前支持两个版本分别是1.1和1.3,针对php5.2/5.3/5.4/5.5版本而发布,Wincache 是Windows下对PHP进行加速的软件,效果显著。在一些测试中,WinCache的得分比eaccelerator和Xcache得分都要好。WinCache可以在微软的IIS官方网站上下载,也可以在最火软件站下载,目前只支持FastCGI运行模式下,Non Thread Safe版本的PHP。 ( 参考: http://www.veryhuo.com/down/html/72353.html ) php官方 英文: Windows Cache Extension for PHP

php和java的一些比较

你离开我真会死。 提交于 2020-03-14 11:03:52
现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营。但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异。其实,PHP+ MySQL高效的开发、品质优良的特性,已经让风靡大学校园的Java变的越来越难堪。而作为PHP+ MySQL为什么在历史的进程中,后来居上,独领风骚呢?为什么基于Java架构的的电子商务除了高额的开发成本,而变的前途暗淡呢?首先得明白PHP和Java之间的差异才行。 1、 出身 Java本来的设计初衷是为了家用消费电子产品开发一个分布式代码系统。 PHP就是为了互联网的应用而生的。   2、系统的技术架构比较 分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割 裂开来,易于控制、易于延展,更易于分配资源。从PHP5版本之后,PHP对于系统架构方面也有了质的飞跃。ShopNC 采用PHP语言开发,可以完美的实现多层架构分布。运用MVC的设计模式,可使电子商务软件具有更加高效、合理的系统架构。使得系统在可拓展性、需求应变性上与Java编写的电子商务软件系统的毫不逊色。 Gutmans 在前年发表过一篇文章,其中也阐述了多核环境中多线程(JVM)与多进程(LAMP)的比较

很赞的PHP字符串加密函数

情到浓时终转凉″ 提交于 2020-03-14 07:52:38
最近, 从discuz里面发现了一个很牛的加密解密函数。 此函数的厉害之处在于 可以在指定时间内加密还原字符串,超时无法还 原 这样我们就可以拿此函数来做很多用途了,比如:单点登录的token加密传输啦,临时密码啦等等 1 /* * 2 * @param string $string 原文或者密文 3 * @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE 4 * @param string $key 密钥 5 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 6 * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文 7 * 8 * @example 9 * 10 * $a = authcode('abc', 'ENCODE', 'key'); 11 * $b = authcode($a, 'DECODE', 'key'); // $b(abc) 12 * 13 * $a = authcode('abc', 'ENCODE', 'key', 3600); 14 * $b = authcode('abc', 'DECODE', 'key'); // 在一个小时内,$b(abc),否则 $b 为空 15 */ 16

文件包含漏洞

蓝咒 提交于 2020-03-10 06:03:36
php所提供的文件包含功能太强大,导致包含漏洞易出现 php文件包含漏洞 四个函数 include(),include_once(),require(),require_once() 区别:require找不到被包含的文件会报错并停止运行,include则是警告继续运行脚本 once为包含一次的意思,只会包含一次文件中代码 本地包含 只要文件中有正确的php代码,就好被执行。 可利用文件上传与文件包含来执行恶意代码。 非php代码文件会暴露源码信息 远程包含 条件是远程包含功能开启 在php.ini中 all_url_include = off /on 默认为off 需改为on 攻击者可构造恶意站点进行攻击。 $_GET[‘page’] 利用方式 敏感文件读取 访问目标主机文件,若有并且可以读取,可以读取文件内容 无该文件,会有类似open_basedir restriction in effect的警告 敏感路径 windows linux 2. 远程包含shell 若all_url_open是激活状态可以写入一句话木马 如: <? fputs(fopen("shell.php","w"), "<?php eval($_POST[shell]);?>") ?> 本地包含+文件上传 可以上传图片,文档 采用拼接方式构造图片木马等 再加上包含漏洞,调用文件

php系统函数

时光毁灭记忆、已成空白 提交于 2020-03-08 08:04:56
系统函数 数组相关的函数: 数组的键/值操作: 1.array_values($arr) 返回数组中所有的值并给其建立数字索引 2.array_keys($arr[, '值'[, true]]) 返回数组中所有的键名 给'值'表示拿出该值的键 给'true'表示值用===判断 3.in_array('值', $arr[, true]) 判断数组中是否有某个值 给true表示用===判断 4.array_key_exists('键', $arr) 判断数组中是否有某个键 5.array_flip($arr) 键值交换 6.array_reverse($arr[, true]) 反转数组 给true表示保留原来的数字下标 统计与唯一性: count($arr[, 1]) 统计数组元素的个数 给1表示递归统计数组个数(不常用) array_count_values($arr) 统计数组中值出现的次数 注意:只能统计string或者int,否则报错 substr_count($str,',')统计字符串某字符出现的次数。 array_unique($arr) 去除数组中重复的元素,保留前面的值 使用回调函数过滤数组: array_filter($arr, callback); 会将数组中的每个值都传给回调函数,在回调函数中返回true就保留该值,返回false就不保留 数组排序函数: 1

PHP加密函数

允我心安 提交于 2020-03-03 00:47:02
PHP中的加密方式有如下几种 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串。 raw_output -- 如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 这是一种不可逆加密,执行如下的代码 $password = '123456'; echo md5($password); 得到结果是e10adc3949ba59abbe56e057f20f883e 2. Crype加密 string crypt ( string $str [, string $salt ] ) crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。 参数 str -- 待散列的字符串。 salt -- 可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。 这是也一种不可逆加密,执行如下的代码 复制代码 代码如下: $password = '123456'; $salt = "test";// 只取前两个 echo crypt($password, $salt); 得到的结果是teMGKvBPcptKo 使用自动盐值的例子如下: 复制代码 代码如下:

PHP加密函数

旧城冷巷雨未停 提交于 2020-03-03 00:46:45
单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出.这个散列计算是单向的,即不能对固定长度的输出进行计算从而获取输入信息. 特征:雪崩效应、定长输出和不可逆 作用:确保数据的完整性 MD5 :以 32 字符十六进制数字形式返回散列值。( 如果第二个参数为true,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 ***由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见 附录2 。 ) crypt :单向字符串散列。( 如果第二个参数没有,创建出的会是弱密 码,php5.6之后没有会抛出E_NOTICE 级别的错误。为了更 好的安全性,请确保指定一个足够强度的盐值。 ) 附录1 sha1 :以 32 字符十六进制数字形式返回散列值。( 如果第二个参数为true,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 ***由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见 附录2 。 ) 对称加密 对称加密是指加密和解密使用的密钥是同一个或者可以互相推算. urlencode :编码 URL 字符串(除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)) urldecode :解码已编码的 URL 字符串 base64

PHP加密函数—crypt()函数加密

醉酒当歌 提交于 2020-03-03 00:46:24
在介绍加密函数之前,我们先来介绍一下数据加密原理:就是对原来的明文件或者数据按照某种算法进行处理,使其成为不可读的一段代码,通常称之为“密文”,通过这样的途径来达到保护数据不被非法窃取和阅读的目的! 在PHP中能对数据进行加密的函数主要有:crypt()、md5()以及sha1(),还有就是加密扩展库Mcrpyt和Mash。在这篇文章中,我 们先介绍使用crpyt()函数进行加密! crypt()函数 可以完成单向加密功能,是单向字符串散列! 大理石平台维修 crypt()函数语法格式如下: 1 string crypt ( string $str [, string $salt ] ) 算法 salt长度 CRYPT_STD_DES 2-character(默认) CRYPT_EXT_DES 9-character CRYPT_MD5 12-character(以$1$开头) CRYPT_BLOWFISH 16-character(以$2$开头) 这里要说明一下: 在默认的情况下,PHP使用一个或者两个字符的 DES 干扰串,如果系统使用的是MD5,那么就会使用 12个字符,可以通过 CRYPT_SALT_LENGTH 变量来查看当前所使用的干扰串的长度! crypt()函数实例用法: 下面我们使用一个实例,让大家一目了然,具体代码如下: 1 2 3 4 5 6 7 <?php