aes加密字符串 openssl_aes加解密(openssl方式)

/**

* 说明:

*

* User: 胡熔

* Date: 2018/11/5

* Time: 15:47

*/

include 'aes.class.php';

$str = '这是加密前的字符';

$key='http://www.hu-rong.com';

$aes = new Aes($key);

$encrypted = $aes->encrypt($str);

echo '要加密的字符串:' . $str . '
加密key为'.$key.'
加密后的字符串:', $encrypted, '


';

$decrypted = $aes->decrypt($encrypted);

echo '要解密的字符串:', $encrypted, '
解密后的字符串:', $decrypted;

类:

/**

* 说明:

*

* User: 胡熔

* Date: 2018/11/5

* Time: 15:43

*/

class Aes

{

/**

* var string $method 加解密方法,可通过openssl_get_cipher_methods()获得,可选值如下:

*

* Array

* (

* [0] => AES-128-CBC

* [1] => AES-128-CBC-HMAC-SHA1

* [2] => AES-128-CBC-HMAC-SHA256

* [3] => AES-128-CFB

* [4] => AES-128-CFB1

* [5] => AES-128-CFB8

* [6] => AES-128-CTR

* [7] => AES-128-ECB

* [8] => AES-128-OCB

* [9] => AES-128-OFB

* [10] => AES-128-XTS

* [11] => AES-192-CBC

* [12] => AES-192-CFB

* [13] => AES-192-CFB1

* [14] => AES-192-CFB8

* [15] => AES-192-CTR

* [16] => AES-192-ECB

* [17] => AES-192-OCB

* [18] => AES-192-OFB

* [19] => AES-256-CBC

* [20] => AES-256-CBC-HMAC-SHA1

* [21] => AES-256-CBC-HMAC-SHA256

* [22] => AES-256-CFB

* [23] => AES-256-CFB1

* [24] => AES-256-CFB8

* [25] => AES-256-CTR

* [26] => AES-256-ECB

* [27] => AES-256-OCB

* [28] => AES-256-OFB

* [29] => AES-256-XTS

* [30] => BF-CBC

* [31] => BF-CFB

* [32] => BF-ECB

* [33] => BF-OFB

* [34] => CAMELLIA-128-CBC

* [35] => CAMELLIA-128-CFB

* [36] => CAMELLIA-128-CFB1

* [37] => CAMELLIA-128-CFB8

* [38] => CAMELLIA-128-CTR

* [39] => CAMELLIA-128-ECB

* [40] => CAMELLIA-128-OFB

* [41] => CAMELLIA-192-CBC

* [42] => CAMELLIA-192-CFB

* [43] => CAMELLIA-192-CFB1

* [44] => CAMELLIA-192-CFB8

* [45] => CAMELLIA-192-CTR

* [46] => CAMELLIA-192-ECB

* [47] => CAMELLIA-192-OFB

* [48] => CAMELLIA-256-CBC

* [49] => CAMELLIA-256-CFB

* [50] => CAMELLIA-256-CFB1

* [51] => CAMELLIA-256-CFB8

* [52] => CAMELLIA-256-CTR

* [53] => CAMELLIA-256-ECB

* [54] => CAMELLIA-256-OFB

* [55] => CAST5-CBC

* [56] => CAST5-CFB

* [57] => CAST5-ECB

* [58] => CAST5-OFB

* [59] => ChaCha20

* [60] => ChaCha20-Poly1305

* [61] => DES-CBC

* [62] => DES-CFB

* [63] => DES-CFB1

* [64] => DES-CFB8

* [65] => DES-ECB

* [66] => DES-EDE

* [67] => DES-EDE-CBC

* [68] => DES-EDE-CFB

* [69] => DES-EDE-OFB

* [70] => DES-EDE3

* [71] => DES-EDE3-CBC

* [72] => DES-EDE3-CFB

* [73] => DES-EDE3-CFB1

* [74] => DES-EDE3-CFB8

* [75] => DES-EDE3-OFB

* [76] => DES-OFB

* [77] => DESX-CBC

* [78] => IDEA-CBC

* [79] => IDEA-CFB

* [80] => IDEA-ECB

* [81] => IDEA-OFB

* [82] => RC2-40-CBC

* [83] => RC2-64-CBC

* [84] => RC2-CBC

* [85] => RC2-CFB

* [86] => RC2-ECB

* [87] => RC2-OFB

* [88] => RC4

* [89] => RC4-40

* [90] => RC4-HMAC-MD5

* [91] => SEED-CBC

* [92] => SEED-CFB

* [93] => SEED-ECB

* [94] => SEED-OFB

* [95] => aes-128-cbc

* [96] => aes-128-cbc-hmac-sha1

* [97] => aes-128-cbc-hmac-sha256

* [98] => aes-128-ccm

* [99] => aes-128-cfb

* [100] => aes-128-cfb1

* [101] => aes-128-cfb8

* [102] => aes-128-ctr

* [103] => aes-128-ecb

* [104] => aes-128-gcm

* [105] => aes-128-ocb

* [106] => aes-128-ofb

* [107] => aes-128-xts

* [108] => aes-192-cbc

* [109] => aes-192-ccm

* [110] => aes-192-cfb

* [111] => aes-192-cfb1

* [112] => aes-192-cfb8

* [113] => aes-192-ctr

* [114] => aes-192-ecb

* [115] => aes-192-gcm

* [116] => aes-192-ocb

* [117] => aes-192-ofb

* [118] => aes-256-cbc

* [119] => aes-256-cbc-hmac-sha1

* [120] => aes-256-cbc-hmac-sha256

* [121] => aes-256-ccm

* [122] => aes-256-cfb

* [123] => aes-256-cfb1

* [124] => aes-256-cfb8

* [125] => aes-256-ctr

* [126] => aes-256-ecb

* [127] => aes-256-gcm

* [128] => aes-256-ocb

* [129] => aes-256-ofb

* [130] => aes-256-xts

* [131] => bf-cbc

* [132] => bf-cfb

* [133] => bf-ecb

* [134] => bf-ofb

* [135] => camellia-128-cbc

* [136] => camellia-128-cfb

* [137] => camellia-128-cfb1

* [138] => camellia-128-cfb8

* [139] => camellia-128-ctr

* [140] => camellia-128-ecb

* [141] => camellia-128-ofb

* [142] => camellia-192-cbc

* [143] => camellia-192-cfb

* [144] => camellia-192-cfb1

* [145] => camellia-192-cfb8

* [146] => camellia-192-ctr

* [147] => camellia-192-ecb

* [148] => camellia-192-ofb

* [149] => camellia-256-cbc

* [150] => camellia-256-cfb

* [151] => camellia-256-cfb1

* [152] => camellia-256-cfb8

* [153] => camellia-256-ctr

* [154] => camellia-256-ecb

* [155] => camellia-256-ofb

* [156] => cast5-cbc

* [157] => cast5-cfb

* [158] => cast5-ecb

* [159] => cast5-ofb

* [160] => chacha20

* [161] => chacha20-poly1305

* [162] => des-cbc

* [163] => des-cfb

* [164] => des-cfb1

* [165] => des-cfb8

* [166] => des-ecb

* [167] => des-ede

* [168] => des-ede-cbc

* [169] => des-ede-cfb

* [170] => des-ede-ofb

* [171] => des-ede3

* [172] => des-ede3-cbc

* [173] => des-ede3-cfb

* [174] => des-ede3-cfb1

* [175] => des-ede3-cfb8

* [176] => des-ede3-ofb

* [177] => des-ofb

* [178] => desx-cbc

* [179] => id-aes128-CCM

* [180] => id-aes128-GCM

* [181] => id-aes128-wrap

* [182] => id-aes128-wrap-pad

* [183] => id-aes192-CCM

* [184] => id-aes192-GCM

* [185] => id-aes192-wrap

* [186] => id-aes192-wrap-pad

* [187] => id-aes256-CCM

* [188] => id-aes256-GCM

* [189] => id-aes256-wrap

* [190] => id-aes256-wrap-pad

* [191] => id-smime-alg-CMS3DESwrap

* [192] => idea-cbc

* [193] => idea-cfb

* [194] => idea-ecb

* [195] => idea-ofb

* [196] => rc2-40-cbc

* [197] => rc2-64-cbc

* [198] => rc2-cbc

* [199] => rc2-cfb

* [200] => rc2-ecb

* [201] => rc2-ofb

* [202] => rc4

* [203] => rc4-40

* [204] => rc4-hmac-md5

* [205] => seed-cbc

* [206] => seed-cfb

* [207] => seed-ecb

* [208] => seed-ofb

* )

*/

protected $method;

/**

* var string $secret_key 加解密的密钥

*/

protected $secret_key;

/**

* var string $iv 加解密的向量,有些方法需要设置比如CBC

*/

protected $iv;

/**

* var string $options (不知道怎么解释,目前设置为0没什么问题)

*/

protected $options;

/**

* 构造函数

*

* @param string $key 密钥

* @param string $method 加密方式

* @param string $iv iv非 NULL 的初始化向量

* @param mixed $options 文档上解释是:options 是以下标记的按位或: OPENSSL_RAW_DATA 、 OPENSSL_ZERO_PADDING。默认为0

*

*/

public function __construct($key, $method = 'AES-128-ECB', $iv = '', $options = 0)

{

// key是必须要设置的

$this->secret_key = isset($key) ? $key : 'htTp://www.yunInDex.com@4806';

$this->method = $method;

$this->iv = $iv;

$this->options = $options;

}

/**

* 加密方法,对数据进行加密,返回加密后的数据

*

* @param string $data 要加密的数据

*

* @return string

*

*/

public function encrypt($data)

{

return openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);

}

/**

* 解密方法,对数据进行解密,返回解密后的数据

*

* @param string $data 要解密的数据

*

* @return string

*

*/

public function decrypt($data)

{

return openssl_decrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);

}

}

运行结果:要加密的字符串:这是加密前的字符

加密key为http://www.hu-rong.com

加密后的字符串:xNztpX5dgxuXpdd5dcINwgLHA4scqd1rs3LV9ypab48=

要解密的字符串:xNztpX5dgxuXpdd5dcINwgLHA4scqd1rs3LV9ypab48=

解密后的字符串:这是加密前的字符

你可能感兴趣的:(aes加密字符串,openssl)