MAC:密码校验和。数字认证技术,能够证明数据接收和发送提供数据的在传送过程中没有被修改过。但是不能提供数字签名功能,因为发送和接收双方共享同一个公钥,会出现一方使用公钥伪造信息的情况。hash函数 + 对称加密 = MAC。
MAC的实现算法分为2种: hash函数和对称分组加密算法(DES)
hash函数提供数据认证功能,信息摘要(消息摘要:http://baike.baidu.com/view/2396437.htm)作为校验信息。hash码是消息认证码的一种变形,hash函数的输入是长度可变的消息M,输出是固定大小的hash码H(M),具有错误检测能力。hash码不需使用密钥,仅仅是消息输入函数。
常用hash校验算法:
MD5:128位的位元摘要信息(16轮)
http://baike.baidu.com/view/7636.htm
SHA-1:160位的位元摘要信息(20轮)
http://baike.baidu.com/view/94209.htm
(变种SHA-224, SHA-256, SHA-384 和 SHA-512 (这些有时候也被称做 SHA-2))
HMAC:基于哈希的消息验证方法,密钥+hash算法 = 数字签名。计算HMAC需要一个散列函数hash(可以是md5或者sha-1)和一个密钥key。http://baike.baidu.com/view/1136366.htm
加密:
对称加密:DES 和 TripleDes,通过数据位的代换和置换实现的。
RC4:无限网络中使用的一种加密技术。主要是对流数据中的每一位进行加密。
AES:高级加密标准,用来代替DES加密算法的。对称密码体制的发展趋势将以分组密码为重点。分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成。
http://baike.baidu.com/view/133041.htm
非对称加密,主要应用于数字签名(数字签名:http://baike.baidu.com/view/7626.htm)。采用双钥密码系统的加密方法,在一个过程中使用两个密钥,一个用于加密,另一个用于解密,这种加密方法称为非对称加密,也称为公钥加密,因为其中一个密钥是公开的(另一个则需要保密)。
RSA:第一个能同时用于加密和数字签名的算法,也易于理解和操作。这种加密算法的特点主要是密钥的变化,对称加密算法只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与私钥。支持数据加密和数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。
RSA:
http://baike.baidu.com/view/10613.htm
DSA:DSA数字签名,非对称加密的另一种实现。
http://baike.baidu.com/view/637115.htm
这里有Java实现的加密算法:
http://snowolf.javaeye.com/blog/379860
http://www.javaeye.com/wiki/security