网络安全之密码

在互联网开发中,我们在传输数据中经常需要对数据通过算法进行加密,来保证信息的安全。

1.消息摘要算法(Hash函数)

1.无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。
2.只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,即单向、不可逆的
3.好的摘要算法,很难找到碰撞

常见的hash函数:md5,sha1,sha256等


2.加密算法


一套加密系统:S={P, C, K, E, D}
P——明文空间,表示全体可能出现的明文集合,
C——密文空间,表示全体可能出现的密文集合,
K——密钥空间,密钥是加密算法中的可变参数,
E——加密算法,由一些公式、法则或程序构成,
D——解密算法,它是E的逆。


1.对称加密算法
简单来说,对称式加密就是加密和解密使用同一个密钥

DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合;
3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;
RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快;


2.非对称式加密技术

非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的


3.实战

1.md5+salt
md5的安全性
大家都知道md5是不可逆的,单向的,无法破解的。但是他有没有安全隐患的,答案是有的。
首先哈希可以碰撞,当然碰撞的难度很大,其次如果我们建立一个源数据与加密数据之间对应的hash表,然后利用表进行反查,理论上就能很快的获得明文。这种表就是彩虹表
所以我们真正使用md5的时候会加上一个随机的salt(盐),,这样利用彩虹表进行反查的时候,会增大很多的计算难度,可以吓跑99%的黑客,因为彩虹表是空间换时间,理论上不存在包含全部数据的彩虹表。

md5(md5(password) + salt) 这种方式相对来说就非常安全了(salt的值,个人建议8-12位的字符串),即使用户的密码为123456,黑客利用彩虹表进行反查的时候,也会花费大量的时间。

2.rsa加密和解密
有时候需要传输数据,加密之后还能解密的时候,md5,sha1等摘要算法就不够用了,因为摘要算法是单向,不可逆的,无法从加密数据中得到源数据.这个时候就需要加密算法

利用openssl,生成密钥 openssl genrsa -out rsa_private_key.pem 1024
然后利用秘钥,生成公钥 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

你可能感兴趣的:(网络安全之密码)