对称加密
对称加密 很好理解,就是指加密和解密的时候密钥都是同一个,是 对称 的。只要保证密钥的安全,那整个通信过程就可以说具有了机密性。接下来会以 AES加密算法来实战说明。
AES
AES 的意思是 高级加密标准。密钥长度可以是 128、192或256.它是DES算法的替代者,安全强度很高,性能也很好,而且有的硬件还会做特殊优化,所以非常流行。是应用最广泛的对称加密算法。
实战
在一些需要安全性高的业务里面,我们常会用到 非堆成加密。但是在一些简单的数据处理方面,我们还是可以使用对称加密的。毕竟非对称加密比对称加密耗费的时间要更多的。在项目中,我们经常会对银行卡之类的数据进行加密处理。
<?php
class AesTest
{
protected $secretKey = '123213';
public function encryptAES($string)
{
$key = substr(openssl_digest(openssl_digest($this->secretKey, 'sha1', true), 'sha1', true), 0, 16);
$data = openssl_encrypt($string, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
$data = strtoupper(bin2hex($data));
return $data;
}
public function decryptAES($string)
{
$key = substr(openssl_digest(openssl_digest($this->secretKey, 'sha1', true), 'sha1', true), 0, 16);
$decrypted = openssl_decrypt(hex2bin($string), 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
return $decrypted;
}
}
$aes = new AesTest();
$data = $aes->encryptAES(6210188800062739624);
$decryptedData = $aes->decryptAES($data);
|