加密算法(md5\sha1\RSA验证)

一、定义:将任意长度的消息压缩到某一固定长度的消息摘要的函数,MD5与SHA1都是Hash算法(散列函数),均属于不可逆算法

二、区别

1、MD5输出128位,SHA1输出是160位

2、MD5比SHA1快

3、安全性:SHA1比MD5更安全

三、MD5、SHA1功能

1、文件校验功能:证明某段信息没有被修改;校验信息是否被更改,又被称为文件指纹

2、消息认证:密码验证,证明你确实知道某个密码

四、MD5、SHA1漏洞

例如我知道'password'的MD5值是5f4dcc3b5aa765d61d8327deb882cf99,那么我就用一个数据库存起来,只要我看到5f4dcc3b5aa765d61d8327deb882cf99,我就知道这个是口令'password‘使用MD5处理之后的值

解决数据库反查办法:针对每一个用户U,生成一个随机值Salt,并且在以后永远保持不变,任意两个用户的盐不能相同。然后当用户设置密码的时候,根据明文密码P,计算MD5(P+Salt)=C。而登录的时候用户也给出明文密码P',服务器拿到之后同样计算MD5(P'+Salt)=C',看C'是否等于C

加盐是为了防止攻击者直接用预先计算好 md5 的字典与密文进行匹配查找明文,因为如果用户密码是字典中的条目,添加随机后缀之后几乎不会出现在字典中,攻击者无从构建彩虹表。

针对每一个用户的盐,比如aaaa,分别根据弱密码明文库,计算MD5(弱密码明文+aaaa)=盐aaaa对应的散列值,然后再用这个密码库去对用户A进行生日攻击。对用户B还得重新根据新的盐bbbb生成密码库

4、数据加密:将用户设置的密码进行md5运算后存储至数据库

5、通讯安全

通讯安全,是对数据校验的一种升级应用。

例子:表单提交时,无论get或post方法,在提交时都会以明码的方式进行提交,很不安全

四、RSA加密

对称加密:加密解密都用同一个密钥

非对称加密:发送方用公钥加密数据,接收方用私钥解密数据

RSA属于公钥加密,非对称加密,速度慢,只能处理少量数据

五、RSA应用

1、公钥加密体制:保密性,公钥加密,私钥解密

2、认证,比如数字签名,即私钥持有者对信息进行签名,验证者可以根据公开的公钥进行验证签名是否正确和有效,即实现了认证性,以及不可抵赖性。

3、rsa加密/解密

生成RSA公私钥对 -- 保存公钥 -- 输入信息用公钥加密 -- 传输密文 -- 将密文用rsa公钥解密,获得明文信息

4、rsa加密/解密/签名/验证

5、访问和远程访问安全

6、交易安全

7、消费者身份保护

8、登陆和交易认证

六、程序中应用

向后台传输数据时,后台生成公钥及私钥,将公钥传给前台,前台将数据放入公钥中,后台通过私钥解密,将数据使用md5/sha1加密放入数据库

你可能感兴趣的:(加密算法(md5\sha1\RSA验证))