《PHP实战:PHP实现加密的几种方式介绍》要点:
本文介绍了PHP实战:PHP实现加密的几种方式介绍,希望对您有用。如果有疑问,可以联系我们。
PHP编程PHP中的加密方式有如下几种
PHP编程1. MD5加密
PHP编程string md5 ( string $str [, bool $raw_output = false ] )
PHP编程参数
PHP编程str -- 原始字符串.
PHP编程raw_output -- 如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回.
PHP编程这是一种不可逆加密,执行如下的代码
PHP编程$password = '123456';
echo md5($password);
得到结果是e10adc3949ba59abbe56e057f20f883e
PHP编程2. Crype加密
string crypt ( string $str [, string $salt ] )
PHP编程crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串.
PHP编程参数
PHP编程str -- 待散列的字符串.
PHP编程salt -- 可选的盐值字符串.如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束.
PHP编程这是也一种不可逆加密,执行如下的代码
PHP编程得到的结果是teMGKvBPcptKo
PHP编程使用自动盐值的例子如下:
PHP编程执行结果是输出 Password verified!
PHP编程以不同散列类型使用 crypt()的例子如下:
PHP编程其结果如下
PHP编程Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
SHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6
SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
在 crypt() 函数支持多重散列的系统上,下面的常量根据相应的类型是否可用被设置为 0 或 1:
PHP编程CRYPT_STD_DES - 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值.在盐值中使用非法的字符将导致 crypt() 失败.
CRYPT_EXT_DES - 扩展的基于 DES 算法的散列.其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成.它们被编码成可打印字符,每个字符 6 位,有效位最少的优先.0 到 63 被编码为 "./0-9A-Za-z".在盐值中使用非法的字符将导致 crypt() 失败.
CRYPT_MD5 - MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值.
CRYPT_BLOWFISH - Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串.在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串.两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败.
CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列.如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数.默认的循环次数是 5000,最小是 1000,最大是 999,999,999.超出这个范围的 N 将会被转换为最接近的值.
CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列.如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数.默认的循环次数是 5000,最小是 1000,最大是 999,999,999.超出这个范围的 N 将会被转换为最接近的值.
PHP编程3. Sha1加密
PHP编程string sha1 ( string $str [, bool $raw_output = false ] )
PHP编程参数
PHP编程str -- 输入字符串.
PHP编程raw_output -- 如果可选的 raw_output 参数被设置为 TRUE,那么 sha1 摘要将以 20 字符长度的原始格式返回,否则返回值是一个 40 字符长度的十六进制数字.
PHP编程这是也一种不可逆加密,执行如下代码:
PHP编程$password = '123456';
echo sha1($password);
得到的结果是7c4a8d09ca3762af61e59520943dc26494f8941b
PHP编程以上几种虽然是不可逆加密,但是也可以根据查字典的方式去解密.如下的地址中就提供了可以将上面的加密结果解密出来的功能.
PHP编程http://www.cmd5.com/
PHP编程那大家是不是加了就算加了密,也没用啊,其实不然,只要你的加密足够复杂,被破解出的可能性就越小,比如用以上三种加密方式混合加密,之后我会推荐给大家一个php的加密库.
PHP编程4. URL加密
PHP编程string urlencode ( string $str )
PHP编程此函数便于将字符串编码并将其用于 URL 的哀求部分,同时它还便于将变量传递给下一页.
PHP编程返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样.由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码不同.
PHP编程string urldecode ( string $str )
PHP编程解码给出的已编码字符串中的任何 %##. 加号('+')被解码成一个空格字符.
PHP编程这是一种可逆加密,urlencode方法用于加密,urldecode方法用于解密,执行如下代码:
PHP编程$url = 'http://www.xxx.com/CraryPrimitiveMan/';
$encodeUrl = urlencode($url);
echo $encodeUrl . "\n";// 如果是在网页上展示的,就将\n修改为<br/>
echo urldecode($encodeUrl);
得到的结果如下
PHP编程http%3A%2F%2Fwww.xxx.com%2FCraryPrimitiveMan%2F
http://www.xxx.com/CraryPrimitiveMan/
基于RFC 3986的加密URL的方法如下:
PHP编程5. Base64信息编码加密
PHP编程string base64_encode ( string $data )
PHP编程使用 base64 对 data 进行编码.
PHP编程设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体.
PHP编程Base64-encoded 数据要比原始数据多占用 33% 左右的空间.
PHP编程string base64_decode ( string $data [, bool $strict = false ] )
PHP编程对 base64 编码的 data 进行解码.
PHP编程参数
PHP编程data -- 编码过的数据.
PHP编程strict -- 如果输入的数据超出了 base64 字母表,则返回 FALSE.
PHP编程执行如下代码:
PHP编程其结果如下
PHP编程推荐phpass
PHP编程经 phpass 0.3 测试,在存入数据库之前进行哈希保护用户密码的标准方式. 许多常用的哈希算法如 md5,甚至是 sha1 对于密码存储都是不平安的, 因为骇客能够使用那些算法轻而易举地破解密码.
PHP编程对密码进行哈希最平安的方法是使用 bcrypt 算法.开源的 phpass 库以一个易于使用的类来提供该功能.
PHP编程以上就是本文关于PHP加密方式的介绍了,希望大家能够喜欢.
《PHP实战:PHP实现加密的几种方式介绍》是否对您有启发,欢迎查看更多与《PHP实战:PHP实现加密的几种方式介绍》相关教程,学精学透。维易PHP学院为您提供精彩教程。