软件工程师应该关注的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:base64加密不安全,容易破解。

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

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

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

工作中用到加密算法:
微信支付接口:MD5,后续会兼容SHA1、SHA256、HMAC等
支付宝支付:RSA
KE和SW2:MD5、SHA1、RSA

几种常用加密算法的优缺点:

DES加密优缺点:
DES秘钥位数比较短,56bit,安全性比较低,不能对抗差分和线性密码分析;但是DES加密速度比较快。

RSA加密的优缺点:
RSA算法的秘钥很长,加密的计算量比较大,安全性较高,但是加密速度比较慢。

采用DES与RSA相结合的应用,使它们的优缺点正好互补,即DES加密速度快,适合加密较长的报文,可用其加密明文;RSA加密速度慢,安全性好,应用于DES 密钥的加密,可解决DES 密钥分配的问题。目前这种RSA和DES结合的方法已成为EMAIL保密通信标准。

SHA1 和 MD5 是散列算法,将任意大小的数据映射到一个较小的、固定长度的唯一值。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。MD5 比 SHA1 大约快 33%。

猜你喜欢

转载自blog.csdn.net/zzr881/article/details/82346413