php可以加密数据吗 php可以加密数据吗为什么

PHP文件果真如你所说,无法加密的吗?肯定的回答你,PHP无法加密,真正可以加密的是CGI(其实是二进制代码,WINDOWS下就是EXE文件),CGI的破解困难得多,但是没有理论上无法破解的东西 。
对于PHP代码的机密啊,有一个死招,就是自己定做一套PHP系统 , 修改PHP的源程序,例如替换里面关键字、函数名称,以后你的程序只有在该PHP环境下才能正常执行,其它平台下就报告语法错误,然后对你编译的PHP 。EXE进行加密 。
php一共有几种加密方式一共有5种加密方式如下:
1.MD5加密php可以加密数据吗:将任意长度php可以加密数据吗的信息作为输入值php可以加密数据吗,并将其换算成一个 128 位长度的"指纹信息"或"报文摘要"值来代表这个输入值php可以加密数据吗 , 并以换算后的值作为结果加密 。
2.Crype加密:增加由使用特定加密方法的特定字符串所生成的字符串数量加密 。
3.Sha1加密: 产生一个名为报文摘要的 160 位的输出php可以加密数据吗,报文摘要可以被输入到一个可生成或验证报文签名的签名加密 。
4.url加密:使用urlencode函数对数据进行编码加密 。
5.base64加密:使用base64_decode方法对数据进行编码加密 。
PHP对称加密-AES 对称加解密算法中,当前最为安全php可以加密数据吗的是 AES 加密算法(以前应该是是 DES 加密算法) , PHP 提供了两个可以用于 AES 加密算法的函数簇: Mcrypt和OpenSSL。
其中 Mcrypt 在 PHP 7.1.0 中被弃用(The Function Mycryptis Deprecated) , 在 PHP 7.2.0 中被移除,所以即可起php可以加密数据吗你应该使用 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 是按数据块大?。?28/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 算法 。

推荐阅读