加密技术简介:对明文数据信息通过不同的算法进行加密处理,形成一种新的密文(乱码形式),通过输入秘钥进行数据解析
加密算法分类:
1. 单向散列加密:
指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出进行计算获得输入信息,salt又称为盐值
在单向加密中使用的主要算法有:MD5、sha1、crypt等。
2. 对称加密算法:
对称加密算法是指加密和解密使用同一个秘钥或者可以互相推算
优点:开销小,适用于大量同一类型数据的加密
缺点:加密解密秘钥相同,一旦秘钥被盗,存在安全隐患
对称加密的常用算法有: DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法,PHP中包含:urlencode()/urldecode(),base64_encode()/base64_decode()
3. 非对称加密技术:
非对称加密和解密使用的秘钥不相同,其中一个对外公开,称之为公钥,另一个不对外公开,只有开发者知道。
举例:
- 乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。
- 得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。
- 乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
PHP中常用加密算法:
1.Md5加密技术:常用加密算法,以散列值形式进行加密,单向加密函数,不可逆过程,通常用于大型网站的注册密码
用法:md5("变量",$raw_output),默认以32位字符16进制形式返回散列值,若第二参数设为true,则返回16字节的原始二进制格式数据
2.Base64加密技术:常用加密算法,base64_endoce()/base64_decode(),将二进制数据转化为Ascal码字符
特点:将非Ascall码字符转化为该字符进行传输(图片,音频等)
用法:base64_encode($str);base64_decode($str,bool)
3.URL编码加密技术: urlencode()/urldecode();rawurlencode()/rawurldecode()
(1) urlencode()/urldecode()
用法:urlencode('编码字符串');urldecode('解码字符串');
注意:字符串中除了 -_.之外所有非字母数字字符都将被替换为 %加两位十六进制数,空格被编码为 +
//常见符号编码结果:
? -> %3F;= -> %3D; -> +;% -> %25;& -> %26;\ -> %5C;+ -> %2B;
(2) rawurlencode()/rawurldecode()
用法:rawurlencode("编码字符串");rawurldecode("解码字符串");
与urlencode()/urldoecde()区别:将空格变为%20,不再是+
4.Crypt加密技术(不常用):基于MD5/DES算法加密,单向加密函数,不可逆过程,返回散列字符串
用法:crypt('变量名','加密干扰串'); //没有写干扰串的前提下,每次刷新自动生成
例:(1)基于DES算法加密:crypt('变量名',‘im’);
(2)基于MD5算法加密:crypt('变量名',‘$1$xxxxxxxx$’)
5.Sha1加密技术:单向加密函数,不可逆过程,返回散列值,与MD5加密方式略有不同,默认返回40位长度加密字符串,设置参数为true返回20位的16进制数字
用法:sha1("变量",$raw_output)