md5报文要将以16字节长度的原始二进制格式返回。返回以32 位字符十六进制数字形式返回散列值。目前主流措辞普遍已有MD5实现,将数据(如汉字)运算为另一固定长度值,是杂凑算法的根本事理。加密算法的事理大家有兴趣的可以自己探索,市情上MD5解密的软件也有很多,大多都是将破解 的密码存入数据库中,进行查询来“破解”,许多大略的密码可以被破解,实际中我们常日利用双层MD5密码加密,或者“加盐”加密。
2.Crypt
语法:string crypt(string $str[,string $salt])
返回一个基于标准UNIX DE5算法或系统上其他可用的替代算法的散列字符串,个中,
$str:须要机密的明文,
$salt:加密是的滋扰串,使编码更安全,如果没有这个salt,将随机天生一个滋扰串,否则刷新加密密文不变。crype()创建出来的会是弱密码。 php 5.6及之后的版本会在没有它的情形下抛出一个 E_NOTICE 级别的缺点。为了更好的安全性,请确保指定一个足够强度的盐值。
3.Sha1(单向加密,不可解密)
md5返回32位,sha1返回40位。由于此函数依赖的算法已不敷够繁芜,不推举利用此函数对明文密码加密。
语法:string sha1(string $str[,bool $raw_output=false])
$str:加密的字符串
$raw_output:为TRUE时,sha1将以20字符长度原是个事返回,FALSE时,返回40字符长度的十六进制数字。
返回sha1散列值字符串。
4.URL编码技能加密(双向)
加密:urlencode($str):除了(- _ .)括号中三个之外的所有非字母数字字符豆浆被更换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。
解密:urldecode($str):
rawurlencode($str):按照RFC1738对 URL进行编码,返回字符串,把空格编码为(%20)。
rawurldecode($str):对已编码的字符串进行解码,此字符串中百分号%后跟两位十六机制的序列豆浆被更换成原义字符。
5.Base64(将非ASCII转成ASCII)base64也不算是一种加密算法,可理解为一种编码格式。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
Base64-encoded 数据要比原始数据多占用 33% 旁边的空间。
base64_encode($data):利用base64对data进行编码
base64_decode($data[,bool $strict=false]):对利用MIME base64编码的数据进行解码,$strict如果输入的数据超出了base64字符表,则返回false.
总结:信息加密技能
单向散列加密(不可逆过程):通过不同长度的信息进行散列打算,得到固定长度的输出,这个散列打算过程是单向的,既不能对固定长度的输出进行打算从而得到输入信息。
彩虹表观点只做提出,感兴趣的coder可以自行理解。
对称散列加密(有缺点):加密和解密利用的密钥是同一个密钥或者可以相互推算。
非对称散列加密(公钥/私钥):一个公开,另一个只有所有者知道。两个钥匙可以比喻为公钥为锁,而密钥为那把锁对应的钥匙,一对一加解密关系。
结尾:以防大家
彩虹表是一个用于加密散列函数逆运算的预先打算好的表, 为破解密码的散列值(或称哈希值、微缩图、择要、指纹、哈希密文)而准备。一样平常主流的彩虹表都在100G以上。 这样的表常常用于规复由有限集字符组成的固定长度的纯文本密码。这是空间/韶光更换的范例实践, 比每一次考试测验都打算哈希的暴力破解处理韶光少而储存空间多,但却比大略的对每条输入散列翻查表的破解办法储存空间少而处理韶光多。利用加salt的KDF函数可以使这种攻击难以实现。