md5加密
Md5是一种单向的加密技术,不可逆,不能进行解密
crypt加密
crypt()为单向加密,跟md5差不多一样
sha1加密
跟md5很像,不同的是sha1()默认情况下返回40个字符的散列值,传入参数性质一样,第一个为加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,sha1()则会返回原始的20 位原始格式报文摘要
sha1()也是单行加密,没有逆向解密算法
urlencode加密
一个参数,传入要加密的字符串(通常应用于对URL的加密),
urlencode为双向加密,可以用urldecode来加密(严格意义上来说,不算真正的加密)
base64编码加密
base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)
base64_encode()为双向编码,可用base64_decode()来解码。(实际上这也不算加密,只是编码)
AES加密
对称加密,只有一把密钥,只要密钥不泄露,AES加密还是十分安全的
RSA加密
非对称加密,一个公钥,一个密钥两把钥匙,优点是安全可靠
md5,crypt和sha1统称hash算法,urlencode和base64也称为编码。他们都不是严格意义上面的加密。下面重点说下AES和RSA加密。这是最常见的两种加密方式。要理解这两种加密方法。
我先以我自己的理解讲一个故事。有3个国家在打仗,A国和B国是同盟国 对付C国。A国需要和B国共享情报,于是派使者传话给B国约定了彼此之间信件往来的规则。
比如说英文字母A用Z代替,B用3代替(这个加密的规则就是密钥,这里只是举个例子,真实情况不会这么简单),只要密钥不泄露出去,C国就算截取到他们之家的通信也不大可能读懂他们之间的情报。(对称加密)
这种情况持续了很久,C国一直受2个国家的联合打压,眼看就要溃败了。这时候C国军师收买了当时A国传话给B国的使者得到他们之间的通信规则(密钥)。于是C国掌握了情报扭转了局势。
这时候A国和B觉得这样下去不是办法,就算我换一个通信规则,C国也很可能可以获取到。到底要怎么交换情报呢?这时候有人提议用两把钥匙的方式对情报进行加密。A国先对情报进行一次加密,然后随即用密钥1(私钥)解密,但是由于没有用密钥2解密,情报还是看不到,然后就把
密钥2(公钥)发给B国,B国很轻松用密钥2解开了情报。情报内容为”下次什么时候发起进攻?“。这时候C国也窃取到密钥然后翻译了以上情报,大喜。此时,B国拿到情报准备回复,回复内容”下星期一“进行加密。然后发回给A国。
这时候C国又窃取到B国发回给A国的密文,正想解密。可是他怎么解都解不出来。因为解密一定要两套密钥具备才可以。这时候C国彻底懵逼了。
总结:AES加密很容易理解,就是通过一特地的.密钥对一组数据进行加密.AES加密也是对称加密的典型.RSA其实也很好理解,你只要知道理解RSA是要用到两个密钥就可以了,至于什么私钥,公钥其实没有一个统一的标准,不同情况下,私钥也可以是公钥,公钥也可以是私钥,这取决于你怎么使用.