对称加密算法:
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
- DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
- 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
- AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
非对称算法:
- RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
- DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
- ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
散列算法:
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
- MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
- SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;
加密算法的选择:
由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。对称加密算法不能实现签名,因此签名只能非对称算法。
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。https 即是采用的此类方式
那采用多少位的密钥呢? RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
Android 数据加密传输:
假设要传输的数据是 msg,那么首先对 msg 进行 MD5 编码,获得 sign 值,然后将 msg 采用对称/非对称加密算法进行加密形成密文 msg*,然后将密文 msg* 和签名 sign 传输给服务器;服务器获取到数据后先将 msg* 解密,得到原始的 msg,然后将获取的 msg 进行 MD5 编码,得到编码值,与收到的 sign 值进行比较,相等表示未被篡改。











网友评论