一、Md5()加密算法
单项加密,无法解密。
md5(string $str[, bool $raw_output = false]); //计算md5散列值
对于可选参数raw_output。如果设置为true,那么MD5报文摘要将以16字节长度的原始二进制格式返回。false返回32位字符十六进制数字形式返回散列值。
如果想让加密更加难以被破解,可以使用两次或者两次以上进行加密。如:md5(md5($str));
二、Crypt()加密算法
单向加密,无法解密。
crypt(string $str[, string $salt]); //返回一个基于UNIX DES算法或系统上其他可用的替代算法的散列字符串。
$slt:加密时的干扰串,使编码更安全。 //如果没有$salt,将随机生成一个干扰串,否则刷新加密密文不变。 当为md5时,以$1$开头,后面接不超过8位的随机字符。
三、Sha1加密算法
单向加密,无法解密。
sha1(string $str[, bool $raw_output = false]); //计算字符的sha1散列值
$raw_output:如果可选的raw_output参数被设置为true,那么sha1摘要将以20字符长度的原始格式返回。false返回值是一个40字符长度的十六进制数字。
四、URL编码加密技术
双向加密,可以解密。
urlencode(string $str):编码url字符串。
urldecode(string $str):解码已编码的url字符串。
编码规范:次字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
常见的几个: ? => %3F
= => %3D
空格 => +
% => %25
& => %26
\ => %5C
+ => %2B
五、Base64编码加密技术
双向加密,可以解密。
base64_encode(string $data):使用base64对data进行编码。
base64_decode(string $data[, bool $strict = false]):对使用MIME base64编码的数据进行解码。
//strict:如果输入的数据超除了base64字母表,则返回false。
在img标签中的时候:<img src="data:image/jpeg;base64,dsfdfdsd==" >
<img src="data:; base64, dfsafsdfsdfdf==" >
六、信息加密总结
信息加密技术一共分为三类:单项散列加密、对称散列加密、给对称散列加密。
1、单向散列加密是指通过不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出进行计算从而获得输入信息。
(salt)
|
明文 ------------> 单向散列算法 -------------> 密文
2、对称加密是指加密和解密使用的密钥是同一个密钥或者可以互相推算。
salt 密钥
| |
明文 -------------> 加密算法 ----------------> 密文 --------------->解密算法 --------------> 明文
3、非对称加密和解密使用的不是同一个密钥,其中一个对外公开,被称作公钥,另一个只有所有者知道。(也就是一个钥匙一把锁)
加密密钥 解密密钥
| |
明文 --------------> 加密算法 ---------------> 密文 ----------------> 解密算法 -------------> 明文