对称密钥体系
DES 、AES、 3DES ,通信双方用相同的密钥进行加密与解密,需要防止密钥泄露
公钥加密体系
RSA,数字签名签名用的就是这个加密算法。只要密码长度够长,RSA加密的信息实际上是无法破解的。比起对称密钥体而言,RSA加密要慢得多。所以经常用来加密较短的关键信息,而基本信息则采用对称密钥体系算法进行加密。这种加密算法经常用于加密对称密钥体制的密钥和用于数字签名,这也说明破解了RSA加密,就能得到密钥,所以对RSA的安全性要求很高。
散列(哈希)算法
如MD5,SHA1,MAC算法,经常用于验证文件是否是同一个,有没有东西被改动。散列值称为MDC(消息摘要码)
1) MD5(Message Digest Algorithm):是一种不可逆的加密算法,将无限输入转换成有限的输出,也就是一个128位的消息摘要(显示的是一串32位的字符,32×4=128),只要文件内容不同,加密处理的输出字符串就不一样。很多密码校验机制采用这种方式进行,通过直接比较密文是否一致来验证密码。
2) SHA1(secure Hash Algorithm):安全哈希算法,同样是不可逆的加密算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。
两者的区别:可以理解SHA1是一个更安全的MD5算法(160bitVS 128bit),但D5的运算速度更快,SHA1更安全
3) MAC算法(Message Authentication Code,消息认证码算法):是含密钥散列函数算法,兼容MD和SHA算法的特性,并在此基础上加了密钥,也即密钥结合hash算法作了相应运算之后得到消息摘要,也被称为HMAC算法。
p.s
base64编码,只能作为一种编码方式,并不是加密算法,因为可以由编码后的值还原出原来的信息。这种编码方式把3个字符编码成4个字符,会造成编码后的长度增加1/3. 使用base64的初衷是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴。可以通过算法判断一个字符串是否经过base64加密,这是一个P问题。