软件工程师应该关注的web加密手段


加密算法

1.非对称加密(公开密钥加密)       公开密钥加密,是加密和解密使用不同密钥的算法,广泛用于信息传输中。

                                                      常见的算法有:RSA、ElGamal、Rabin。

2.对称加密                                   将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。

                                                     常见的算法有:DES、3DES、AES。

 

数字证书

数字证书是由证书颁发机构(CA)来验证证书持有人的身份受信任的第三方颁发的证书。

 

数字签名

数字签名是可用于验证数字文档的真实性的方法。

 

区别:

数字证书与数字证书都是非对称加密的应用。

数字签名是用于检验一个特定的数字文档或消息是可信的。(即它被用来验证该信息没有被修改)

数字证书是一种机制通常用在网站上增加其可信度它的用户。(即它被用来验证该网站是否是受信用的网站)

 

摘要算法(散列算法)

1.md系列            常见的算法有MD5、MD4、MD3、MD2。

2.sha系列            常见的算法有SHA-1、SHA-224、SHA-256、SHA-384、SHA-512。

 

PS:md5算法原理

        对输入的数据进行补位,使得如果数据位长度LEN对512求余的结果是448。即数据扩展至K*512+448位。即K*64+56个字节,K为整数。具体补位操作:补一个1,然后补0至满足上述要求。 

 

区别:

加密算法是可逆。加密算法作用是提高信息的保密性。

例子:服务器对数据进行加密,发送它一个安全的SSL连接到浏览器,浏览器解密,就可以看到解密的内容。

 

散列算法不可逆。散列算法作用是验证信息的完整性。对一段Message(字节串)产生fingerprint(指纹),可以防止被“篡改”。

例子:某软件网站提供下载的MD5校验值软件xxx.exe,其MD5值是1e07ab3591d25583eff5129293dc98d2,但你下载该软件后计算MD5发现其值却是81395f50b94bb4891a4ce4ffb6ccf64b,那说明该程序已经被他人修改过,那还用不用该软件那你可自己琢磨着看啦。

 

散列算法常常也用于加密,还有一些其他的加密手段,如:base64加密,利用编码加密方式,但是容易被破解。

例子:网站用户登陆的密码,登陆输入的密码与注册的密码的生成的摘要算法值(如:md5)进行匹配,匹配成功就登入成功。

PS:前端对敏感数据加密提交,并不能提高应用的安全性。
         原因是前端加密的代码必须首先传输到客户端,如果在传输层(http协议)上被黑客截获或篡改代码(相当于与公开前端加密算法),那么前端加密必然不安全。
         所以要想保证前端敏感数据安全提交,就必须要在传输层(http协议)加密,而不是在应用层(前端应用)加密,采用https协议才是正确的方法(使用数字证书,无法伪造)。

         后端对敏感数据需要进行加密,不能以明文形式保存。

 

 

PS:2005年,中国密码学家王小云教授领导的小组利用杂凑函数碰撞成功破解MD5密码算法,SHA-1密码算法。(只是缩短了一些破译的时间与步骤)

        只要的网站安全要求不是很高的话,散列算法一般还是可以继续使用的,还是安全的。

        网上所谓MD5解密也不是很靠谱。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM