博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

加密理解

Posted on 2012-01-07 13:11  PHP-张工  阅读(873)  评论(0编辑  收藏  举报

私钥加密(对称加密)

原理:

有一个密码,加密文本,而后使用这个密码再解密文本,获得原文。

通俗实例:

小明给小王发一封信,不想让别人知道其中内容。小明将邮件内容使用密码进行加密后,发送给小王。然后将密码通过其他途径告诉小王,小王收到邮件后,通过密码解密邮件,获得原始邮件内容。

实际应用:

将一些信息加密存储在数据库中,使用时再解密。这样即使黑客盗取了数据库,不知道密码也无法知道内容。

问题:

加密和解密使用同一密码。如密码泄漏给其他人,那么有密码的人就都可以解密或加密了。比如小张知道了密码,就可以解密邮件,并且可以冒充小明给小王发邮件。

公钥加密(不对称加密)

原理:

我有个私钥,还有一个公钥,我将公钥发给别人,别人通过公钥加密文本,发给我,我使用私钥解密获得原文。公钥只能加密,不能解密。

通俗实例:

小王嫌上面的加密方式不安全,他告诉小明了一个密码(公钥),让小明把他的邮件加密后发给他,这个密码只负责加密,没有解密功能。小王收到邮件后使用自己的密码(与公钥对应的私钥)进行解密,获得邮件内容。这样操作后,即使给小明的密码(公钥)泄漏,别人也无法解密邮件。顶多只能加密邮件给小王发送。

实际应用:

给服务器提交信息时,客户端使用公钥对数据加密,传输到服务器后,服务器使用自己的私钥对数据进行解密处理。这样就保证了传输安全。

也可用作身份确认,通过公钥加密指定文本后,发送给接收方,接收方收到数据后使用自己的私钥解密,后将内容回发。发送方比较自己发送的内容和收到的内容就知道接受方是否是真的了。

通讯双方都使用此种加密方式,拥有各自的公钥和私钥,就可以保证相互通讯安全了。

哈希值

原理:

MD5 SHA1 SHA2 的目的是验证数据,在发送时,进行MD5(原文+密码)生成唯一值,接受方,使用同样方法MD5(原文+密码)生成唯一值和发送的唯一值比较,就可知道数据是否是原始数据。

MD5加密是不可逆的。(现在所谓的MD5解密,只是穷举了MD5的值,进行批对,找到原始值。)

通俗实例:

小明给小王发信,不想在发信途中被人更改。他将信件原文和他们两都知道的密码进行了MD5加密,将生成的md5值随邮件也发给小王,小王在收到邮件后使用同样方法获得md5值,经过比较就可知道信件是否在传输途中被人修改。

实际应用:

一般文件下载站,提供文件的MD5哈希值,用户将文件下载后,通过计算文件的哈希值,和下载源提供的哈希值比较就可知道下载的文件是否为原始文件。

因为MD5的不可逆行(无法通过MD5哈希值得到原文),经常将用户密码经过MD5加密后存储在数据库。

对于用户的敏感数据如账户余额等数据为防止直接更改,也可将账户余额+密码,进行MD5加密存储,防止对余额的非法修改。