编程基础--加密解密

经常听到或用到MD5,SH1,Base64,UTF-8,Hash术语和函数等,先简单梳理下,免得混淆了。

一,加密解密

加密的动机就是不想让别人看到真实数据,通过解密则能还原为真实数据(废话)。大概分三种形式或方法

1).hash法:MD5,SHA1,HMAC。

a.hash法能保证的是相同的输入,经过hash算法后,产生相同的输出;不同的输入则产生不同的输出。

b.输出不能经过某种算法还原为输入,即不能解密。

因为这两个特性,hash相关算法常用于校验登陆密码,服务器保存加密后的数据,和客户端上传加密后的数据相比较,即可判断密码是否正确,保证了明文密码的安全。另外可以用来判断一个数据是否被篡改过,A把原始数据和hash后的数据,分别发给B,B收到数据后,对原始数据hash,判断结果是否相等,便可判断数据是否被篡改;当然如果B收到的hash后的数据也是被篡改的,那就没办法了。

2).对称加密:AES,DES,3DES

a.简单可以理解为,A加密后的数据,B通过相反的路径能推导出原始数据。这样需要通讯双方都知道加密解密算法,而别人不知道,这样他们就可以进行安全通讯了。

3).非对称加密RSA,DSA,ECC

a.A先生成一对钥匙 共钥A-Publick Key 和 私钥A-Private Key.公钥给别人,私钥留着。

b.公钥加密,私钥可以解密;私钥加密公钥解密。

c.别人发信息给A,用A的公钥加密,因为只有A-Private Key.能解密,别人窃取数据也没用,所以这个特性能用于加密。

d.当A发数据给别人(公开的),A用私钥加密后,因为其他人可以用A-Publick Key解密,所以A就不能抵赖,这个特性能用于数字签名。

 

另外base64,也有些用于用它来简单的处理密码,这个严格意义上不能算加密了,因为解密的过程太简单而且公开,base64一般用来处理替换特殊字符和在文本中显示二进制数据,算是编码解码的内容,到时和编码解码一起总结下。

参考博文:

http://www.cnblogs.com/yangywyangyw/archive/2012/07/31/2620861.html

posted on 2012-11-01 19:32  武松  阅读(614)  评论(0编辑  收藏  举报