对称加密
加/解密使用相同的密钥,常见算法:DES、AES
对称加密通常使用的是相对较小的密钥,一般小于256bit。
对称加密相比非对称加密算法,加解密的效率要高的多、加密速度快。缺陷在于密钥的管理和分配上比较困难,不是非常安全。
现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给它需要的人。
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据场合。
3DES(Triple DES):基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
基于排序和置换运算。排序是对数据重新进行安排,置换是将一个数据单元替换为另一个。
非对称加密
加/解密使用一对密钥,公钥、私钥。常用算法:RSA、DSA、ECC
密钥只能由一方安全保管,不能外泄,而公钥则可以发给任何需要它的人。缺点加解密时间长、速度慢,只适合对少量数据进行加密。
RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS。
ECC(Elliptic Curves Cryptography):椭圆曲线密码编程学。
Hash算法
一种单向算法。常见算法:MD2,MD4,MD5,SHA,
用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,但不能通过Hash值重新获得目标信息。
Hash算法常用在不可还原的密码存储,信息完整性校验等。
加盐:使用一段字符串,和明文串接在一起,然后哈希得到密文。目的是增加破解负担,防止暴力破解。
如何加盐:可以用某种算法利用当前用户信息(必须是固定,不可修改),得到盐值。
碰撞:两个完全不同的明文得到相同的哈希值。例如:如果使用32位密文,那么密文的组合总数只有(26+10)^32。但如果明文的长度大于32位,那么明文的组合数就大于密文组合数,所以必然会出现多个明文对应一个密文的情况。
在实际操作中,通常采用的方式:采用非对称加密算法管理对称加密算法的密钥,然后用对称加密算法加密数据。
RSA建议采用1024位的数字,ECC建议采用160位,AES采用128位即可。
网友评论