1.加密的目的加密不同于密码。加密是一种动作或过程,其目的是将一段明文信息(可以被人或机器直接读取的信息)转换成看似无意义的字符,必须通过约定的解密规则将信息转换回有意义的可读信息,并且可以通过加密防止未经授权的信息窃取。2、存储加密和传输加密根据加密对象的不同,加密可以分为:存储加密和传输加密。存储加密是指对存储在纸张、磁盘、数据库等介质上的数据进行加密,而传输加密是指对计算机网络、电话、电报等通信渠道中的数据进行加密。不管上面提到的加密方式,本质上还是加密信息。3.加密算法加密算法,经过历史演进,有很多种算法。我所知道的最简单的加密算法就是我在电影中看到的。通过字典或圣经,使用页码和行列号对文本进行一对一加密。解密时,只要解密者持有同一本字典和圣经,知道数字和单词的对应关系,就可以解密。这种加密方法曾经很有效,因为加密的字典可以是任何书籍甚至报纸。3.1对称加密算法按照现代加密算法的划分,上述加密方法都可以归为对称加密的范畴。所谓对称加密就是使用同一个秘钥进行加密和解密,这也是这种加密算法最显着的缺点之一。上面的字典、圣经等也可以理解为秘钥。在现代加密算法中,DES、3DES、AES等算法都是对称加密算法。对称加密有一个明显的缺点,就是秘钥。特别是在传输加密中,信息的发送方和接收方需要使用相同的秘钥对信息进行加密和解密。接收方如何安全地获得秘钥成为此类加密的重点,因为一旦秘钥被截获,整个加密通信就如同明文传输一样。因此,对称加密更适用于存储加密。比如有些电脑硬盘会通过主板上的加密芯片对整个硬盘进行加密,采用的是对称加密算法。3.2非对称加密算法由于对称加密在通信加密领域的缺陷,1976年W.Diffie和M.Hellman提出了“非对称加密”的概念。这种加密算法的秘钥分为“公钥”和“私钥”。公钥用于加密信息,私钥用于解密。这样,信息的接收方就可以生成公钥和私钥的副本,然后将公钥发送给所有的信息发送方。信息发送方使用公钥加密信息,然后将信息发送给接收方,接收方使用私钥解密。这种算法的好处是不需要传输解密后的私钥,减少了(只能减少,不能避免,必须考虑因素)私钥泄露的可能性。常见的非对称加密算法有:RSA、EIGamal、背包算法、Rebin(RSA的特例)、Diffie-Hellman密钥交换协议中的公钥加密算法和椭圆曲线加密算法等,最著名的是RSA算法.3.3与对称加密相比,由于加密和解密都必须有相同的秘钥,所以分发和同步秘钥的通信容易泄露秘钥,但对称加密的速度比非对称加密快很多,特别适用于大量数据的加密。明显的。非对称加密的主要缺点之一是速度慢,适用于加密少量数据。因此,在实际应用中,常常将两者结合使用。例如,双方建立通信后,A首先生成一对公钥和私钥,并将公钥发送给B,B使用公钥转换一个对称加密算法”加密后的秘钥+有效性期间,发回给A,A用私钥解密后,双方同步一个对称算法的秘钥,然后在规定的有效期内,双方可以使用这个秘钥对通信数据进行加密和解密过程大致如下图所示:3.4误区看到这里有同学可能会问为什么我没看到你提到我常用的md5和hash算法(sha1、sha256、sha512、sha1024等)其实准确的说,md5哈希算法和散列算法都不能算是加密算法,它们都属于信息摘要算法,可以针对不同的信息生成唯一的信息摘要mation,它们都属于不可逆算法,即无法通过生成的摘要信息恢复原始信息。利用这一特点,在实际应用中,常采用这些算法对用户输入的密码进行计算,并将计算结果进行比较,以验证用户输入的密码是否正确。另一个应用场景是通信签名,用于验证通信过程中信息是否丢失或被篡改。4、PHP加密最佳实践加密总是离不开安全,每一个PHPer都必须将应用安全作为一种必要的设计思想融入到代码中。以下是一些最佳实践建议。别用MD5了,别用sha1了,破解基本没有难度。请使用password_hash对密码进行hash(php版本大于等于5.5,小于5.5请使用password_compat库),因为password_hash函数已经为你做了加盐处理,随机字符串作为salt已经通过加密算法散列了一部分,password_verify()函数会自动从散列中提取盐,因此您不必担心存储盐的问题。通信接口的签名,请使用非对称算法对签名密钥进行加密,并设置密钥的有效期,并定期更换。延伸阅读:对称加密算法非对称加密算法PHP更新:现代PHP中的密码安全PHP编程:安全有任何问题或建议,可以扫描下方二维码或微信搜索【phpjiagoushier】,关注我的微信公众号【PHP架构】,跟我交流互动。
