网站首页 > 文章中心 > 其它

数据加密php_数据加密标准用于数据加密的位数是多少

作者:小编 更新时间:2023-09-27 19:16:39 浏览量:196人看过

PHP常用加密解密方法

$flag = true ?返回原始流数据

true ?返回原始流数据

$algo : 算法名称,可通过hash_algos()函数获取所有hash加密的算法

而不同.

true ?返回原始流数据.

具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关.比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同

Password_verify($str,$crypted);

函数返回哈希加密后的密码字符串, password_hash() 是crypt()的 一个简单封装

$algo : 算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT

$options = [

"cost"=10,//指明算法递归的层数,

"salt"="xxadasdsad"//加密盐值,即将被遗 弃,采用系统自动随机生成安全性更高

];

使用的算法、cost 和盐值作为哈希的一部分返回

Password_verify($str,$hashed);

可以进行解码;

string $mode [, string $iv ] )

mcrypt_decrypt ( string $cipher , string $key , string $crypted ,

$ciper:加密算法,mcrypt_list_algorithms()可以获取该函数所有支持的算法

$mode : 加密模式 ,mcrypt_list_modes()获取所有支持的加密模式,ecb,cbc

$key: 加密的秘钥,mcrypt_get_key_size ( string $cipher , string $mode )

获取指定的算法和模式所需的密钥长度.$key要满足这个长度,如果长 度无效会报出警告.

$iv : 加密的初始向量,可通过mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),

Iv的参数size:

通过mcrypt_get_iv_size ( string $cipher , string $mode )获取

Iv 的参数source:

Note: 需要注意的是,如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态.

$data : 要加密的字符串数据

PHP对称加密-AES

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

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

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

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

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

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

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

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

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

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

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

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

php源码怎么加密

第一段:无需任何PHP扩展的加密

此类加密的代表有 威盾PHP加密专家、PHP在线加密平台、PHP神盾 等.

此类加密都是以eval函数为核心,辅以各式各样的字符串混淆和各种小技巧,来达到加密目的(更准确的说,应该算是混淆).下面以一个简单的hello world为例来说明此类加密的大体过程.

php

echo "hello world";

首先 ,我们把这段代码变为通过eval执行的

eval('echo "hello world";');

就这样子,我们的第一个加密过的php代码新鲜出炉了...

上面这个例子非常非常简单,基本上任何有一点php语言基础甚至别的语言基础的人都能轻松的看懂并解密.所以呢,我们需要一些方法让这个加密至少看上去不是那么简单.

第二段:同时采用多种编码函数

这儿所说的特定字符是一些极其相似的字符,如I和1,0和O.试想一下满屏都是O和0组成的变量,并且每一个的名字长度都在10个字符以上... 判断文件自身是否被修改

这个功能看似容易,对文件做一下摘要再进行下对比即可知道是否被修改了,但是如何才能在文件内把摘要嵌入进去呢?我没有找到完美的方案,但一个变通的方案还是很容易的...

exit('file edited');

}

当然,你可以把这个校验字符串放在别的位置来提高破解的难度.有了这个,别人想破解你的程序可就得多费一点功夫了...

既然知道了原理,那解密自然也就非常简单了,总体来说就三步:

把eval替换为输出,比如echo 根据编码规则把字符串还原 如果文件未解密完全,从第一步开始继续

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章