对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
简单通俗来说就是:加密出来的秘钥,可以被解密出来,这种加密方式就被称为“对称加密”
AES加密算法
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。现在,高级加密标准已然成为对称密钥加密中最流行的算法之一。---摘自(维基百科)
PHP的OpenSSL扩展已经实现了AES加密算法,我们可以通过OpenSSL扩展提供的方法实现对数据的加密和解密,PHP在7.2版本已经完全移除了MCrypt加密,PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt。
PHP AES的实现
<?php class Aes { /** * var string $method 加解密方法 */ protected $method; /** * var string $secret_key 加解密的密钥 */ protected $secret_key; /** * var string $iv 加解密的向量 */ protected $iv; /** * var int $options */ protected $options; /** * 构造函数 * @param string $key 密钥 * @param string $method 加密方式 * @param string $iv 向量 * @param int $options */ public function __construct($key = '', $iv = '', $method = 'AES-128-CBC', $options = OPENSSL_RAW_DATA) { $this->secret_key = isset($key) ? $key : 'b49b38ae0a13e02d'; $this->method = in_array($method, openssl_get_cipher_methods()) ? $method : 'AES-128-CBC'; $this->iv = $iv; $this->options = in_array($options, [OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING]) ? $options : OPENSSL_RAW_DATA; } /** * 加密 * @param string $data 加密的数据 * @return string */ public function encrypt($data = '') { return base64_encode(openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv)); } /** * 解密 * @param string $data 解密的数据 * @return string */ public function decrypt($data = '') { return openssl_decrypt(base64_decode($data), $this->method, $this->secret_key, $this->options, $this->iv); } } //调用示例: $aes = new Aes(); //构造方法要不要传入第二个参数看个人需求,不传也不会报错,但是可能会报warning警告 $res = $aes->encrypt('190ql98ty周董1aQm~啊哈哈!@#$%^&*()_+\./[];'); echo $res; //加密后的内容 //将上面加密后的内容进行解密 print_r($aes->decrypt($res)); //输出:190ql98ty周董1aQm~啊哈哈!@#$%^&*()_+\./[];
本文结束。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论