AES介紹
高級(jí)加密標(biāo)準(zhǔn)(英語(yǔ):Advanced Encryption Standard,縮寫(xiě):AES),在密碼學(xué)中又稱(chēng)Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。
這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。
經(jīng)過(guò)五年的甄選流程,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。
2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱(chēng)密鑰加密中最流行的算法之一。創(chuàng)新互聯(lián)公司專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、云和網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為云和等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
class AES
{
public $method = '';
public $key = '';
public $iv = '';
public function __construct(string $method, string $key, string $iv)
{
if (!in_array($method, openssl_get_cipher_methods())) {
throw new \Exception($method . ' encryption method is not support.');
}
$this->method = $method;
$this->key = $key;
$this->iv = $iv;
}
//AES加密
public function aesEncryption(string $data): string
{
$result = openssl_encrypt($data, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
return base64_encode($result);
}
//AES解密
public function aesDecryption(string $data): string
{
return openssl_decrypt(base64_decode($data), $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
}
}
$config = [
'AES-128-CBC1', //method加密方式 # AES-256-CBC等
'helloworld', //key加密key
md5(time() . uniqid(), true), //iv保證偏移量為16位
];
try{
$obj = new AES(...$config);
echo $encryptionResult = $obj->aesEncryption('Jack') . PHP_EOL;
echo $decryptionResult = $obj->aesDecryption($encryptionResult) . PHP_EOL;
}catch (\Exception $e){
exit($e->getMessage().PHP_EOL);
}