Android SDK 支持的加密算法
一、Android SDK 支持的加密算法
Android SDK 目前支持4种加密算法:MD5 ,SHA,HMAC,AES。其中,前面三种为不可逆加密算法,AES,为可逆加密算法。
下面介绍前面3种不可逆加密算法:
(1)MD5(信息-摘要算法)
用于文件校验,不管文件大小,经过MD5后能够生成唯一的MD5值
(2)SHA (安全散列算法)
数字签名等密码学应用中的重要工具。广泛用于电子商务安全领域,较MD5 安全
(3)HMAC(散列消息鉴别码,基于密钥 hash算法认证协议)
消息鉴别码鉴别原理:用公开函数和密钥产生一个固定长度的值作为认证标识。用这个标识鉴别消息的完整性。使用密钥生成的一个固定大小的小数据块,即MAC,并将其加入消息,然后传输。接收方利用发送方共享的密钥进行识别认证。
二、加密算法分类
常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash(散列)算法。
(1)对称加密
指加密和解密使用相同密钥的加密算法。
对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。
假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。
对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去—— 如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。
常见的对称加密算法:DES(Data Encrpytion Standard)、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES(Adavanced Encrpytion Standard)
(2)非对称加密
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。
假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。
非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。
常见的非对称加密算法:RSA、ECC(移动设备用(椭圆曲线算法))、Diffie-Hellman、El Gamal、DSA(数字签名用)
(3)Hash(散列)算法
Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
三、加密算法的选择
(1)应该根据使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
(2)对称加密算法不能实现签名,因此签名只能非对称算法。
(3)由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
(4)在实际的操作过程中,通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。