php7.2 版本用 openssl_encrypt 代替 mcrypt_encrypt

ECB 加密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Aes
{
//密钥 须是16位
public $key ;

public function __construct()
{
$this->key = '1234567890123456';
}

/**
* 解密字符串
* @param string $str 字符串
* @return string
*/
public function decode($str)
{
return openssl_decrypt(base64_decode($str),"AES-128-ECB",$this->key,OPENSSL_RAW_DATA);
}

/**
* 加密字符串
* @param string $str 字符串
* @return string
*/
public function encode($str)
{
return base64_encode(openssl_encrypt($str,"AES-128-ECB",$this->key,OPENSSL_RAW_DATA));
}

}

CBC 加密

若你是采用 CBC 加密,则还需排序 $iv 偏移量,如下面是 AES-128-CBC 加解密类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Aes
{
//密钥 须是16位
private static $key = "sV3KOjKoPhT8qTtq";

//偏移量
private static $iv = 'sV3KOjKoPhT8qTtq';

/**
* 解密字符串
* @param string $str
* @return false|string
*/
public static function decrypt(string $str)
{
return openssl_decrypt(base64_decode($str), "AES-128-CBC", self::$key,
OPENSSL_RAW_DATA, self::$iv);
}

/**
* 加密字符串
* @param string $str 字符串
* @return string
*/
public static function encrypt(string $str): string
{
return base64_encode(openssl_encrypt($str, "AES-128-CBC", self::$key,
OPENSSL_RAW_DATA, self::$iv));
}
}

原文链接:
https://my.oschina.net/u/3403514/blog/1809008