加密算法
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解密也不是很靠谱。