php加密的浸染
加密:为了做数据加密,不被看到明文。
在php的开拓过程中,常常须要对部分数据(如用户密码)进行加密

一、加密类型:
1.单向散列加密
便是把任意长度的信息进行散列打算,得到固定长度的输出,这个散列打算过程是单向的,即不能对固定长度的输出信息进行打算从而得到输入信息。
(1)特色:雪崩效应、定长输出和不可逆。
(2)浸染是:确保数据的完全性。
(3)加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32
2.对称散列加密
对称加密是指加密和解密是利用同一个密钥,或者可以相互推算。
(1)加密方和解密方利用同一个密钥。
(2)加密解密的速率比较快,适宜数据比较永劫的利用。
(3)密钥传输的过程不屈安,且随意马虎被破解,密钥管理也比较麻烦。
(4)加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持128、192、256、512位密钥的加密)、Blowfish。
3.非对称散列加密
非对称加密和解密利用的不是同一个密钥,个中一个对外公开,称作公钥,另一个只有所属者知道,称作私钥。
(1)每个用户拥用一对密钥加密:公钥和私钥。
(2)公钥加密,私钥解密;私钥加密,公钥解密。
(3)公钥传输的过程不屈安,易被盗取和更换。
(4)由于公钥利用的密钥长度非常长,以是公钥加密速率非常慢,一样平常不该用其去加密。
(5)某一个用户用其私钥加密,其他用户用其公钥解密,实现数字署名的浸染。
(6)公钥加密的另一个浸染是实现密钥交流。
(7)加密和署名算法:RSA、ELGamal。
(8)公钥署名算法:DSA。
注释:
(1)RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,须要加密的文件块的长度也是可变的;
(2)DSA(Digital Signature Algorithm):数字署名算法,是一种标准的 DSS(数字署名标准);
(3)由于非对称加密算法的运行速率比对称加密算法的速率慢很多,当我们须要加密大量的数据时,建议采取对称加密算法,提高加解密速率。
对称加密算法不能实现署名,因此署名只能非对称算法。
(4)由于对称加密算法的密钥管理是一个繁芜的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采取非对称加密算法。
(5)在实际的操作过程中,我们常日采取的办法是:采取非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速率快的优点,又实现了安全方便管理密钥的优点。
二、php中常用的加密函数:
1.MD5加密:
string md5 ( string $str [, bool $raw_output = false ] )
(1)md5()默认情形下以 32 字符十六进制数字形式返回散列值,它接管两个参数,第一个为要加密的字符串,第二个为raw_output的布尔值,
默认为false,如果设置为true,md5()则会返回原始的 16 位二进制格式报文择要
(2)md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过网络,列举,碰撞等方法破解
2.Crypt加密:
string crypt ( string $str [, string $salt ] )
(1)crypt()接管两个参数,第一个为须要加密的字符串,第二个为盐值(便是加密滋扰值,如果没有供应,则默认由PHP自动天生);
返回散列后的字符串或一个少于 13 字符的字符串,后者为了差异盐值。
(2)crypt()为单向加密,跟md5一样。
3.Sha1加密:
string sha1 ( string $str [, bool $raw_output = false ])
(1)跟md5很像,不同的是sha1()默认情形下返回40个字符的散列值,传入参数性子一样,第一个为加密的字符串,
第二个为raw_output的布尔值,默认为false,如果设置为true,sha1()则会返回原始的20 位原始格式报文择要
(2)sha1()也是单行加密,没有逆向解密算法
4.Urlencode加密:
string urlencode ( string $str )
(1)一个参数,传入要加密的字符串(常日运用于对URL的加密)
(2)urlencode为双向加密,可以用urldecode来加密(严格意义上来说,不算真正的加密)
(3)返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被更换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
(3)常见的urlencode()的转换字符
? => %3F
= => %3D
% => %25
& => %26
\ => %5C
空格 => %5C
5.base64编码加密:
string base64_decode ( string $encoded_data )
(1)base64_encode()接管一个参数,也便是要编码的数据(这里不说字符串,是由于很多时候base64用来编码图片)
(2)base64_encode()为双向加密,可用base64_decode()来解密
以上便是php加密的浸染的详细内容,更多请关注其它干系文章!
更多技巧请《转发 + 关注》哦!