在计算机安全领域,MD5、AES和RSA算法的应用比较广泛,它们可用来避免密码明文传输的漏洞危害。但是,这3种算法有什么区别呢?
什么是MD5
MD5信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。2004年,证实MD5算法无法防止碰撞,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
什么是AES
AES是高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,目前已经被全世界广泛使用,同时AES已经成为对称密钥加密中最流行的算法之一。AES支持三种长度的密钥:128位,192位,256位。
什么是RSA
RSA是一种公钥密码算法,它的名字是由它的三位开发者,即Ron Rivest、Adi Shamir 和 Leonard Adleman 的姓氏的首字母组成的。RSA可以被用于公钥密码和数字签名。RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种gong击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
MD5、AES和RSA算法区别
不可逆算法(MD5):使用的是hash算法,在计算过程中原文的部分信息是丢失了的。也就是说,MD5的运算过程存在信息丢失。因而仅仅根据MD5的计算过程和得到的最终结果,是无法逆向计算出明文的。任何数据都能加密成16字节,不太安全。
过程:创建账号时,将账号对应密码的MD5存储数据库,登录时,对用户输入的密码进行MD5加密传送到服务器端,根据账号从数据库查询出该账号对应的MD5值进行对比,判断是否相同。
风险:字典表很大。在md5.cn,存储超过80万亿个密码,很快速查询到一些密码强度不复杂的密码。
对称加密(AES):加密解密都是用同一个密钥,需要传输密钥,不太安全,但速度快。
过程:秘钥固定在客户端代码和后端代码中,登录时使用固定密码将明文密码加密传输到后端,后端使用相同的固定秘钥解密,然后查询用户存储在数据库的密码,进行对比认证。
风险:秘钥硬编码于客户端代码中,存在泄漏风险。
非对称加密(RSA):有公钥和私钥,公钥加密,私钥解密,安全,速度慢
过程:在后端使用非对称算法RSA生成一对公私钥,公钥固定存储在客户端代码中,私钥存储在后端代码中,登录时对输入的密码使用公钥加密传输,后端收到加密的秘钥后,使用私钥进行解密,然后查询该账号对应的密码,进行对比。
安全保证:得不到私钥,公钥加密后的密码的密码是无法解密的,保证了密码的绝对安全。
以上就是MD5、AES和RSA算法这三者之间的区别,你都了解了吗?
标签:AES,加密,RSA,密码,算法,MD5 From: https://blog.51cto.com/u_15693888/5960041