好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

关于php7-mcrypt的信息

很多站长朋友们都不太清楚php7-mcrypt,今天小编就来给大家整理php7-mcrypt,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP对称加密-AES 2、 php7 怎么安装mcrypt模块 3、 Cento7 安装magento 提示必须加载PHP扩展 'mcrypt'。 4、 安装PHP扩展模块 为PHP添加mcrypt模块了 5、 如何在openSUSE42.1下编译安装PHP7 PHP对称加密-AES

对称加解密算法中,当前最为安全的是 AES 加密算法(以前应该是是 DES 加密算法),PHP 提供了两个可以用于 AES 加密算法的函数簇: Mcrypt 和 OpenSSL 。

其中 Mcrypt 在 PHP 7.1.0 中被弃用(The Function Mycrypt is Deprecated),在 PHP 7.2.0 中被移除,所以即可起你应该使用 OpenSSL 来实现 AES 的数据加解密。

在一些场景下,我们不能保证两套通信系统都使用了相函数簇去实现加密算法,可能 siteA 使用了最新的 OpenSSL 来实现了 AES 加密,但作为第三方服务的 siteB 可能仍在使用 Mcrypt 算法,这就要求我们必须清楚 Mcrypt 同 OpenSSL 之间的差异,以便保证数据加解密的一致性。

下文中我们将分别使用 Mcrypt 和 OpenSSL 来实现 AES-128/192/256-CBC 加解密,二者同步加解密的要点为:

协同好以上两点,就可以让 Mcrypt 和 OpenSSL 之间一致性的对数据进行加解密。

AES 是当前最为常用的安全对称加密算法,关于对称加密这里就不在阐述了。

AES 有三种算法,主要是对数据块的大小存在区别:

AES-128:需要提供 16 位的密钥 key

AES-192:需要提供 24 位的密钥 key

AES-256:需要提供 32 位的密钥 key

AES 是按数据块大小(128/192/256)对待加密内容进行分块处理的,会经常出现最后一段数据长度不足的场景,这时就需要填充数据长度到加密算法对应的数据块大小。

主要的填充算法有填充 NUL("0") 和 PKCS7,Mcrypt 默认使用的 NUL("0") 填充算法,当前已不被推荐,OpenSSL 则默认模式使用 PKCS7 对数据进行填充并对加密后的数据进行了 base64encode 编码,所以建议开发中使用 PKCS7 对待加密数据进行填充,已保证通用性(alipay sdk 中虽然使用了 Mcrypt 加密簇,但使用 PKCS7 算法对数据进行了填充,这样在一定程度上亲和了 OpenSSL 加密算法)。

Mcrypt 的默认填充算法。NUL 即为 Ascii 表的编号为 0 的元素,即空元素,转移字符是 "\0",PHP 的 pack 打包函数在 'a' 模式下就是以 NUL 字符对内容进行填充的,当然,使用 "\0" 手动拼接也是可以的。

OpenSSL的默认填充算法。下面我们给出 PKCS7 填充算法 PHP 的实现:

默认使用 NUL("\0") 自动对待加密数据进行填充以对齐加密算法数据块长度。

获取 mcrypt 支持的算法,这里我们只关注 AES 算法。

注意:mcrypt 虽然支持 AES 三种算法,但除 MCRYPT_RIJNDAEL_128 外, MCRYPT_RIJNDAEL_192/256 并未遵循 AES-192/256 标准进行加解密的算法,即如果你同其他系统通信(java/.net),使用 MCRYPT_RIJNDAEL_192/256 可能无法被其他严格按照 AES-192/256 标准的系统正确的数据解密。官方文档页面中也有人在 User Contributed Notes 中提及。这里给出如何使用 mcrpyt 做标注的 AES-128/192/256 加解密

即算法统一使用 MCRYPT_RIJNDAEL_128 ,并通过 key 的位数 来选定是以何种 AES 标准做的加密,iv 是建议添加且建议固定为16位(OpenSSL的 AES加密 iv 始终为 16 位,便于统一对齐),mode 选用的 CBC 模式。

mcrypt 在对数据进行加密处理时,如果发现数据长度与使用的加密算法的数据块长度未对齐,则会自动使用 "\0" 对待加密数据进行填充,但 "\0" 填充模式已不再被推荐,为了与其他系统有更好的兼容性,建议大家手动对数据进行 PKCS7 填充。

openssl 簇加密方法更为简单明确,mcrypt 还要将加密算法分为 cipher + mode 去指定,openssl 则只需要直接指定 method 为 AES-128-CBC,AES-192-CBC,AES-256-CBC 即可。且提供了三种数据处理模式,即 默认模式 0 / OPENSSL_RAW_DATA / OPENSSL_ZERO_PADDING 。

openssl 默认的数据填充方式是 PKCS7,为兼容 mcrpty 也提供处理 "0" 填充的数据的模式,具体为下:

options 参数即为重要,它是兼容 mcrpty 算法的关键:

options = 0 : 默认模式,自动对明文进行 pkcs7 padding,且数据做 base64 编码处理。

options = 1 : OPENSSL_RAW_DATA,自动对明文进行 pkcs7 padding, 且数据未经 base64 编码处理。

options = 2 : OPENSSL_ZERO_PADDING,要求待加密的数据长度已按 "0" 填充与加密算法数据块长度对齐,即同 mcrpty 默认填充的方式一致,且对数据做 base64 编码处理。注意,此模式下 openssl 要求待加密数据已按 "0" 填充好,其并不会自动帮你填充数据,如果未填充对齐,则会报错。

故可以得出 mcrpty簇 与 openssl簇 的兼容条件如下:

建议将源码复制到本地运行,根据运行结果更好理解。

1.二者使用的何种填充算法。

2.二者对数据是否有 base64 编码要求。

3.mcrypt 需固定使用 MCRYPT_RIJNDAEL_128,并通过调整 key 的长度 16, 24,32 来实现 ase-128/192/256 加密算法。

php7 怎么安装mcrypt模块

进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl

执行phpize生成编译文件,phpize在PHP安装目录的bin目录下

/usr/local/php5/bin/phpize

运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and

the $PHP_AUTOCONF

environment variable is set correctly and then rerun this

script.,需要安装autoconf:

yum install autoconf(RedHat或者CentOS)、apt-get install

autoconf(Ubuntu Linux)

/usr/local/php5/bin/php -v

执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,

这里会报错,可以根据错误信息去排查!你看过后很简单吧以后不会可以向我一样经常到后盾人平台找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢_(•̀ω•́ 」∠)_

Cento7 安装magento 提示必须加载PHP扩展 'mcrypt'。

yum install php-mcrypt

如果php有带版本号,如 php56w

则要运行

yum install php56w-mcrypt

安装PHP扩展模块 为PHP添加mcrypt模块了

上面提供的静态编译的方法,是把所有的模块都打包进 php 主程序中,这样做的好处是,模块直接联系紧密,调用该模块中的函数效率会更高,免去了 寻找模块,加载模块的时间。

静态编译也就是 全部重新编译了,只是根据需求,增加了configure后面的参数。

还有一种是 所谓的 动态编译 比如现在有一个网站,需要增加某个模块,但是网站不允许停顿如此长的时间,那么就刻意选择这样。

以 curl模块为例

进入 php 的 源码包的 ext 目录下的 curl

执行

/usr/local/php/bin/phpize

会生成只针对此模块的 configure 文件

./configure --with-php-config=/usr/local/php/bin/php-config --with-curl=[dir]

make

make install

然后 后显示出来 编译后的 curl.so 所在的路径

复制此文件 到 模块目录下 配置php.ini 文件 重启 apache 或者 php-cgi

配置就生效了。

如何在openSUSE42.1下编译安装PHP7

首先推荐一篇文章

PHP

7

Release

Date

Arrived:

Will

Developers

Adopt

PHP

7?

-

PHP

Classes

blog

。

里面说到是否会去使用PHP7,就个人而言,我是毫不犹豫地使用的,但是生产环境就不是我说了算,所以只能自己在自己的开发环境里更新PHP的版本。那么,你呢?

笔者使用的是Linux的openSUSE42.1发行版,Yast里面还没有PHP7的安装包,于是乎只能自己手动编译安装了。作为一个PHP开发者,我是非常希望能够学会编译安装PHP7的,之前试过几次,但是每次安装都要上网找各种资料,于是乎,这次安装成功后就想把自己的安装过程以及遇到的问题记录下来,方便以后查阅和分享给需要的人。

下载源码并解压

进入正题,要编译安装PHP7,首先当然要下载PHP7的源码。你可以到

github

上clone,也可以到

PHP官网

下载。下载后解压到

/usr/local/src

目录,并将目录重命名为php7。进入目录。

配置编译参数

生成配置文件

./buildconf

配置

./configure

\

--prefix=/usr/local/php7

\

--exec-prefix=/usr/local/php7

\

--bindir=/usr/local/php7/bin

\

--sbindir=/usr/local/php7/sbin

\

--includedir=/usr/local/php7/include

\

--libdir=/usr/local/php7/lib/php

\

--mandir=/usr/local/php7/php/man

\

--with-config-file-path=/usr/local/php7/etc

\

--with-mysql-sock=/var/run/mysql/mysql.sock

\

--with-mcrypt=/usr/include

\

--with-mhash

\

--with-openssl

\

--with-mysqli=shared,mysqlnd

\

--with-pdo-mysql=shared,mysqlnd

\

--with-gd

\

--with-iconv

\

--with-zlib

\

--enable-zip

\

--enable-inline-optimization

\

--disable-debug

\

--disable-rpath

\

--enable-shared

\

--enable-xml

\

--enable-bcmath

\

--enable-shmop

\

--enable-sysvsem

\

--enable-mbregex

\

--enable-mbstring

\

--enable-ftp

\

--enable-gd-native-ttf

\

--enable-pcntl

\

--enable-sockets

\

--with-xmlrpc

\

--enable-soap

\

--without-pear

\

--with-gettext

\

--enable-session

\

--with-curl

\

--with-jpeg-dir

\

--with-freetype-dir

\

--enable-opcache

\

--enable-fpm

\

--disable-cgi

\

--with-fpm-user=nginx

\

--with-fpm-group=nginx

\

--without-gdbm

\

--disable-fileinfo

参数说明

prefix

PHP7安装的根目录

with-config-file-path

PHP7的配置文件目录

执行完上面的配置命令后的结果如下图所示:

执行上面命令的过程中会遇到一些依赖缺少的提示,下面列出我遇到的依赖问题:

错误:

configure:

error:

xml2-config

not

found.

Please

check

your

libxml2

installation.

解决:

zypper

install

libxml2-devel

错误:

configure:

WARNING:

unrecognized

options:

--with-mysql

解决:

取消这个选项,这个选项是不存在的

错误:

configure:

error:

jpeglib.h

not

found.

解决:

zypper

install

libjpeg-devel

错误:

configure:

error:

mcrypt.h

not

found.

Please

reinstall

libmcrypt.

解决:

zypper

install

libmcrypt-devel

错误:

checking

for

recode

support...

yes

configure:

error:

Can

not

find

recode.h

anywhere

under

/usr

/usr/local

/usr

/opt.

解决:

zypper

install

librecode-devel

总的来说,在配置的时候遇到没有的就打开Yast搜一下,如果有的话就安装,然后重新编译看还需要那些,如果在Yast找不到,那就上网找一下Google。

编译和安装PHP7

make

make

install

其中,make之后可以选择make

test。只是一个可选步骤,不执行不知道有什么问题,不过笔者暂时还没遇到。

查看安装成功后的PHP7目录

编译安装成功后,查看PHP7的安装目录`ls

/usr/local/php7`:

设置PHP7的配置文件

cp

/usr/local/src/php7/php.ini-production

/usr/local/php7/etc/php.ini

cp

/usr/local/src/sapi/fpm/init.d.php-fpm

/etc/init.d/php-fpm

cp

/usr/local/php7/etc/php-fpm.conf.default

/usr/local/php7/etc/php-fpm.conf

cp

/usr/local/php7/etc/php-fpm.d/

/usr/local/php7/etc/php-fpm.d/

设置环境变量

在/etc/profile

文件的最后一行加上

export

PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH

然后执行

source

/etc/profile

设置PHP日志目录和php-fpm进程文件(php-fpm.sock)目录

mkdir

-p

/var/log/php-fpm/

mkdir

-p

/var/run/php-fpm

cd

/var/run/

chown

-R

nginx:nginx

php-fpm

将PHP设置为开机启动

chmod

+x

/etc/init.d/php-fpm

chkconfig

php-fpm

on

可以用chkconfig命令查看开机启动服务列表。

启动PHP服务

service

php-fpm

start

通过ps

aux

|

grep

'php'查看PHP是否启动成功

至此,PHP7就安装成功了,你也开始使用PHP7吧!

关于php7-mcrypt的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于关于php7-mcrypt的信息的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did211234
更新时间:2023-05-03   阅读:19次

上一篇: phpvue框架 php crud框架

下一篇:资阳php招聘信息 资阳最新本地招聘信息

相关资讯

最新资料更新

  • 1.kohanaphp版本 koo版
  • 2.php美国东部时间 美国东部时间 换算
  • 3.整站系统php源码 php企业网站整站源码
  • 4.php函数rand PHP函数的参数传递包括
  • 5.php设备判断在线 php判断用户在线状态
  • 6.php5.4.13的简单介绍
  • 7.修改文件限制php php修改上传文件大小
  • 8.php中文变量问号 php变量使用
  • 9.php包含eaplay吗 php是否包含
  • 10.php薪资1680 php一个月能挣多少钱
  • 11.包含peintphp的词条
  • 12.redis缓存类php php redis页面缓存
  • 13.web安全php Web安全原理分析与实践
  • 14.php写循环下拉页面 php下拉菜单的代码
  • 15.中南php哪家好 中南cp
  • 16.主流php框架比较 php框架排行2020
  • 17.mes开源框架PHP mes开源框架 python
  • 18.php下载控件 php下载器
  • 19.phpcrc-itu的简单介绍
  • 20.php登录保护机制 php保持登录状态

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]