php解密

php实现简单的对称加解密

爱⌒轻易说出口 提交于 2020-04-08 12:57:17
public function simple_encode($string = '', $skey = 'tgmnvqufpg') { $strArr = str_split(base64_encode($string)); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) { $key < $strCount && $strArr[$key] .= $value; } return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr)); } public function simple_decode($string = '', $skey = 'tgmnvqufpg') { $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) { $key <= $strCount &&

解密PHP伪类型和伪变量的含义

非 Y 不嫁゛ 提交于 2020-04-05 18:06:22
伪类型是PHP 文档里用于表示参数可以使用的类型或者函数的返回类型。 它们不是 PHP 的数据类型。 只是文档说明,相当于注释。 所以理解的重点就是伪类型就是代码注释,用于说明函数的参数和返回类型的。 由于PHP的伪类型中有 array 和 object,而php基本数据类型中也有他们,导致了人们容易混淆。所以在概念上首先要明确。伪类型是文档注释,不是数据类型。 一、伪类型含义 mixed mixed 说明一个参数可以接受多种不同的(不一定是所有的)类型。 number number 说明一个参数可以是 integer 或者 float。 callback callable说明参数类型是回调类型 array|object array|object 意思是参数既可以是 array 也可以是 object。 void void 指定函数的返回类型为空,即该函数不返回值。 ... 在函数的参数列表中使用,...表示等等的意思。表示该函数接收任意数量的参数。 二、其他 伪类型不仅可以标注函数的参数,也可以标注函数的返回类型。 如何增加文档注释,一般是在开发工具中的函数头部输入 /** 然后直接回车即可生成。 三、示例 如内置函数array_push的文档如下: /** * Push elements onto the end of array * @link https://php.net

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使用DES进行加密和解密

给你一囗甜甜゛ 提交于 2020-02-27 07:12:14
DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科: wiki百科 百度百科 php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll 在配置文件中将这个扩展打开还不能够在windows环境下使用 需要将PHP文件夹下的 libmcrypt.dll 拷贝到系统的 system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。 下面是PHP中使用DES加密解密的一个例子: // $input - stuff to decrypt //$key - the secret key to use function do_mencrypt( $input , $key ) { $input = str_replace ( "" n " , "" , $input ); $input = str_replace( "" t " , "" , $input ); $input = str_replace ( "" r " , "" , $input ); $key = substr(md5( $key ), 0, 24); $td = mcrypt_module_open('tripledes', '', 'ecb', ''); $iv = mcrypt_create_iv(mcrypt

BugkuCTF wp

北慕城南 提交于 2020-02-11 16:51:30
MISC 签到题 扫码关注微信公众号即可获得flag 这是一张单纯的图片 用UE打开如图,在ascii码最下面发现一串编码,发现是字符实体编码。 https://www.qqxiuzi.cn/bianma/zifushiti.php 网站在线解码可得flag 隐写 打开图片,先用stegsolve跑一边没有发现什么,LSB也没有什么,用UE打开也没有什么奇怪的。用binwalk跑一边,没有隐藏文件。 所以考虑是不是高度修改,在IHDR后面将高度改大一些,果然发现flag ## telnet 用wireshark打开流量包,在telent包的data中发现flag 眼见非实(ISCCCTF) 下载文件后,用UE打开发现是PK开头,则是zip压缩包 改后缀后解压得到一个docx文件,猜测可能是zip包。 docx文件本质上就是一个zip压缩包,文件内容在zip压缩包中(文本内容,字体格式等等)。 改后缀为zip后打开 发现一些文件,没有明显的flag信息,但应该就在这些文件里。 一个个用firefox打开,F3快速查找。 得到flag. 啊哒 下载后发现是jpg文件,可能不是LSB隐写(png才有lsb隐写),用stagsolve跑了一下果然没有。用UE打开发现文件比较大,可能有藏东西。 用binwalk跑一下,果然有zip文件。 而且就是flag.txt

如何在PHP中保护数据库密码?

北战南征 提交于 2020-02-09 14:22:46
当 PHP 应用程序建立数据库连接时,通常当然需要传递登录名和密码。 如果我为我的应用程序使用单个最小权限登录名,则PHP需要在某个地方知道该登录名和密码。 保护该密码的最佳方法是什么? 似乎只在PHP代码中编写它不是一个好主意。 #1楼 另一个技巧是使用一个如下所示的PHP单独的配置文件: <?php exit() ?> [...] Plain text data including password 这不会阻止您正确设置访问规则。 但是,如果您的网站被黑,“ require”或“ include”将仅在第一行退出脚本,因此更难以获取数据。 但是,永远不要将配置文件放在可以通过Web访问的目录中。 您应该有一个“ Web”文件夹,其中包含您的控制器代码,css,图片和js。 就这样。 脱机文件夹中还有其他内容。 #2楼 最安全的方法是完全不使用PHP代码中指定的信息。 如果使用Apache,则意味着在httpd.conf或虚拟主机文件文件中设置连接详细信息。 如果这样做,则可以不带任何参数调用mysql_connect(),这意味着PHP将永远不会输出您的信息。 这是您在这些文件中指定这些值的方式: php_value mysql.default.user myusername php_value mysql.default.password mypassword php

浅谈PHP代码执行的大致流程(opcode)

有些话、适合烂在心里 提交于 2020-02-01 00:36:51
说到这个代码执行流程啊,咱也不说太多,先给大家分享一张图片: 怎么样?有点了解了么。说实话,单看这个,我本人是有点懵的,不过,不要怕。咱们来慢慢地看下。 首先,在网上找的信息说PHP代码执行的顺序是这样的,第一步是词法分析,第二步是语法分析,第三步是转化为opcode,第四部也就是顺序执行这些opcode了。 聪明如各位看到这里,再返回上面看一下这张图片,肯定就会有不一样的感觉了。咱们借用一句话来阐述这几个步骤:当PHP拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。 我们都知道,PHP本身是用C实现的,因此最终调用的也是C的函数,实际上,我们可以把PHP看做一个C开发的软件。既然如此,那么PHP的代码执行的核心也就是翻译出来的一条一条指令,在这里就是opcode。 那么,我们就可以把opcode看成是PHP代码执行的最基本单位。所以PHP代码执行的本质也就可以理解为,我们的代码最终被翻译为一组opcode处理函数,完事之后再顺序执行。 有了这些认知之后,我们就来看下这个opcode究竟是什么鬼。本质上一个opcode由两个参数(op1,op2)、返回值和处理函数组成。它的官方解释就是PHP脚本编译后的中间语言,类似于java中的bytecode或者是.net中的MSL。 它的作用就是如下:

PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密

牧云@^-^@ 提交于 2020-01-28 04:24:39
<?php /* 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密 */ // 加密 $algorithm = MCRYPT_BLOWFISH; // 加密算法 $key = 'mycryptkey'; // 加密密钥 $data = '12345'; // 要加密或解密的数据 $mode = MCRYPT_MODE_CBC; // 加密或解密的模式 // 初始向量 $iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode), MCRYPT_DEV_URANDOM); // 加密数据 $encrypted_data = mcrypt_encrypt($algorithm, $key, $data, $mode, $iv); $plain_text = base64_encode($encrypted_data); var_dump($plain_text); // 每次都会变化的长度12的字符串,例如 vDJCatqAGdg= /////////////////////////////////////// // 解密 $encrypted_data = base64_decode($plain_text); $decoded = mcrypt