{"id":394,"title":"aes\u52a0\u89e3\u5bc6(openssl\u65b9\u5f0f)","good":0,"bad":0,"hit":3289,"created_at":"2018-11-05 16:07:24","content":"
<?php\n\/**\n * \u8bf4\u660e:\n *\n * User: \u80e1\u7194\n * Date: 2018\/11\/5\n * Time: 15:47\n *\/\n\ninclude 'aes.class.php';\n\n$str = '\u8fd9\u662f\u52a0\u5bc6\u524d\u7684\u5b57\u7b26';\n$key='http:\/\/www.hu-rong.com';\n\n$aes = new Aes($key);\n$encrypted = $aes->encrypt($str);\n\necho '\u8981\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\uff1a' . $str . '<br>\u52a0\u5bc6key\u4e3a'.$key.'<br\/>\u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\uff1a', $encrypted, '<hr>';\n\n$decrypted = $aes->decrypt($encrypted);\n\necho '\u8981\u89e3\u5bc6\u7684\u5b57\u7b26\u4e32\uff1a', $encrypted, '<br>\u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\uff1a', $decrypted;<\/pre>
<\/p>
<\/p>\u7c7b\uff1a<\/strong><\/p>
<?php\n\n\/**\n * \u8bf4\u660e:\n *\n * User: \u80e1\u7194\n * Date: 2018\/11\/5\n * Time: 15:43\n *\/\nclass Aes\n{\n \/**\n * var string $method \u52a0\u89e3\u5bc6\u65b9\u6cd5\uff0c\u53ef\u901a\u8fc7openssl_get_cipher_methods()\u83b7\u5f97,\u53ef\u9009\u503c\u5982\u4e0b\uff1a\n *\n * Array\n * (\n * [0] => AES-128-CBC\n * [1] => AES-128-CBC-HMAC-SHA1\n * [2] => AES-128-CBC-HMAC-SHA256\n * [3] => AES-128-CFB\n * [4] => AES-128-CFB1\n * [5] => AES-128-CFB8\n * [6] => AES-128-CTR\n * [7] => AES-128-ECB\n * [8] => AES-128-OCB\n * [9] => AES-128-OFB\n * [10] => AES-128-XTS\n * [11] => AES-192-CBC\n * [12] => AES-192-CFB\n * [13] => AES-192-CFB1\n * [14] => AES-192-CFB8\n * [15] => AES-192-CTR\n * [16] => AES-192-ECB\n * [17] => AES-192-OCB\n * [18] => AES-192-OFB\n * [19] => AES-256-CBC\n * [20] => AES-256-CBC-HMAC-SHA1\n * [21] => AES-256-CBC-HMAC-SHA256\n * [22] => AES-256-CFB\n * [23] => AES-256-CFB1\n * [24] => AES-256-CFB8\n * [25] => AES-256-CTR\n * [26] => AES-256-ECB\n * [27] => AES-256-OCB\n * [28] => AES-256-OFB\n * [29] => AES-256-XTS\n * [30] => BF-CBC\n * [31] => BF-CFB\n * [32] => BF-ECB\n * [33] => BF-OFB\n * [34] => CAMELLIA-128-CBC\n * [35] => CAMELLIA-128-CFB\n * [36] => CAMELLIA-128-CFB1\n * [37] => CAMELLIA-128-CFB8\n * [38] => CAMELLIA-128-CTR\n * [39] => CAMELLIA-128-ECB\n * [40] => CAMELLIA-128-OFB\n * [41] => CAMELLIA-192-CBC\n * [42] => CAMELLIA-192-CFB\n * [43] => CAMELLIA-192-CFB1\n * [44] => CAMELLIA-192-CFB8\n * [45] => CAMELLIA-192-CTR\n * [46] => CAMELLIA-192-ECB\n * [47] => CAMELLIA-192-OFB\n * [48] => CAMELLIA-256-CBC\n * [49] => CAMELLIA-256-CFB\n * [50] => CAMELLIA-256-CFB1\n * [51] => CAMELLIA-256-CFB8\n * [52] => CAMELLIA-256-CTR\n * [53] => CAMELLIA-256-ECB\n * [54] => CAMELLIA-256-OFB\n * [55] => CAST5-CBC\n * [56] => CAST5-CFB\n * [57] => CAST5-ECB\n * [58] => CAST5-OFB\n * [59] => ChaCha20\n * [60] => ChaCha20-Poly1305\n * [61] => DES-CBC\n * [62] => DES-CFB\n * [63] => DES-CFB1\n * [64] => DES-CFB8\n * [65] => DES-ECB\n * [66] => DES-EDE\n * [67] => DES-EDE-CBC\n * [68] => DES-EDE-CFB\n * [69] => DES-EDE-OFB\n * [70] => DES-EDE3\n * [71] => DES-EDE3-CBC\n * [72] => DES-EDE3-CFB\n * [73] => DES-EDE3-CFB1\n * [74] => DES-EDE3-CFB8\n * [75] => DES-EDE3-OFB\n * [76] => DES-OFB\n * [77] => DESX-CBC\n * [78] => IDEA-CBC\n * [79] => IDEA-CFB\n * [80] => IDEA-ECB\n * [81] => IDEA-OFB\n * [82] => RC2-40-CBC\n * [83] => RC2-64-CBC\n * [84] => RC2-CBC\n * [85] => RC2-CFB\n * [86] => RC2-ECB\n * [87] => RC2-OFB\n * [88] => RC4\n * [89] => RC4-40\n * [90] => RC4-HMAC-MD5\n * [91] => SEED-CBC\n * [92] => SEED-CFB\n * [93] => SEED-ECB\n * [94] => SEED-OFB\n * [95] => aes-128-cbc\n * [96] => aes-128-cbc-hmac-sha1\n * [97] => aes-128-cbc-hmac-sha256\n * [98] => aes-128-ccm\n * [99] => aes-128-cfb\n * [100] => aes-128-cfb1\n * [101] => aes-128-cfb8\n * [102] => aes-128-ctr\n * [103] => aes-128-ecb\n * [104] => aes-128-gcm\n * [105] => aes-128-ocb\n * [106] => aes-128-ofb\n * [107] => aes-128-xts\n * [108] => aes-192-cbc\n * [109] => aes-192-ccm\n * [110] => aes-192-cfb\n * [111] => aes-192-cfb1\n * [112] => aes-192-cfb8\n * [113] => aes-192-ctr\n * [114] => aes-192-ecb\n * [115] => aes-192-gcm\n * [116] => aes-192-ocb\n * [117] => aes-192-ofb\n * [118] => aes-256-cbc\n * [119] => aes-256-cbc-hmac-sha1\n * [120] => aes-256-cbc-hmac-sha256\n * [121] => aes-256-ccm\n * [122] => aes-256-cfb\n * [123] => aes-256-cfb1\n * [124] => aes-256-cfb8\n * [125] => aes-256-ctr\n * [126] => aes-256-ecb\n * [127] => aes-256-gcm\n * [128] => aes-256-ocb\n * [129] => aes-256-ofb\n * [130] => aes-256-xts\n * [131] => bf-cbc\n * [132] => bf-cfb\n * [133] => bf-ecb\n * [134] => bf-ofb\n * [135] => camellia-128-cbc\n * [136] => camellia-128-cfb\n * [137] => camellia-128-cfb1\n * [138] => camellia-128-cfb8\n * [139] => camellia-128-ctr\n * [140] => camellia-128-ecb\n * [141] => camellia-128-ofb\n * [142] => camellia-192-cbc\n * [143] => camellia-192-cfb\n * [144] => camellia-192-cfb1\n * [145] => camellia-192-cfb8\n * [146] => camellia-192-ctr\n * [147] => camellia-192-ecb\n * [148] => camellia-192-ofb\n * [149] => camellia-256-cbc\n * [150] => camellia-256-cfb\n * [151] => camellia-256-cfb1\n * [152] => camellia-256-cfb8\n * [153] => camellia-256-ctr\n * [154] => camellia-256-ecb\n * [155] => camellia-256-ofb\n * [156] => cast5-cbc\n * [157] => cast5-cfb\n * [158] => cast5-ecb\n * [159] => cast5-ofb\n * [160] => chacha20\n * [161] => chacha20-poly1305\n * [162] => des-cbc\n * [163] => des-cfb\n * [164] => des-cfb1\n * [165] => des-cfb8\n * [166] => des-ecb\n * [167] => des-ede\n * [168] => des-ede-cbc\n * [169] => des-ede-cfb\n * [170] => des-ede-ofb\n * [171] => des-ede3\n * [172] => des-ede3-cbc\n * [173] => des-ede3-cfb\n * [174] => des-ede3-cfb1\n * [175] => des-ede3-cfb8\n * [176] => des-ede3-ofb\n * [177] => des-ofb\n * [178] => desx-cbc\n * [179] => id-aes128-CCM\n * [180] => id-aes128-GCM\n * [181] => id-aes128-wrap\n * [182] => id-aes128-wrap-pad\n * [183] => id-aes192-CCM\n * [184] => id-aes192-GCM\n * [185] => id-aes192-wrap\n * [186] => id-aes192-wrap-pad\n * [187] => id-aes256-CCM\n * [188] => id-aes256-GCM\n * [189] => id-aes256-wrap\n * [190] => id-aes256-wrap-pad\n * [191] => id-smime-alg-CMS3DESwrap\n * [192] => idea-cbc\n * [193] => idea-cfb\n * [194] => idea-ecb\n * [195] => idea-ofb\n * [196] => rc2-40-cbc\n * [197] => rc2-64-cbc\n * [198] => rc2-cbc\n * [199] => rc2-cfb\n * [200] => rc2-ecb\n * [201] => rc2-ofb\n * [202] => rc4\n * [203] => rc4-40\n * [204] => rc4-hmac-md5\n * [205] => seed-cbc\n * [206] => seed-cfb\n * [207] => seed-ecb\n * [208] => seed-ofb\n * )\n *\/\n protected $method;\n\n \/**\n * var string $secret_key \u52a0\u89e3\u5bc6\u7684\u5bc6\u94a5\n *\/\n protected $secret_key;\n\n \/**\n * var string $iv \u52a0\u89e3\u5bc6\u7684\u5411\u91cf\uff0c\u6709\u4e9b\u65b9\u6cd5\u9700\u8981\u8bbe\u7f6e\u6bd4\u5982CBC\n *\/\n protected $iv;\n\n \/**\n * var string $options \uff08\u4e0d\u77e5\u9053\u600e\u4e48\u89e3\u91ca\uff0c\u76ee\u524d\u8bbe\u7f6e\u4e3a0\u6ca1\u4ec0\u4e48\u95ee\u9898\uff09\n *\/\n protected $options;\n\n \/**\n * \u6784\u9020\u51fd\u6570\n *\n * @param string $key \u5bc6\u94a5\n * @param string $method \u52a0\u5bc6\u65b9\u5f0f\n * @param string $iv iv\u975e NULL \u7684\u521d\u59cb\u5316\u5411\u91cf\n * @param mixed $options \u6587\u6863\u4e0a\u89e3\u91ca\u662f\uff1aoptions \u662f\u4ee5\u4e0b\u6807\u8bb0\u7684\u6309\u4f4d\u6216\uff1a OPENSSL_RAW_DATA \u3001 OPENSSL_ZERO_PADDING\u3002\u9ed8\u8ba4\u4e3a0\n *\n *\/\n public function __construct($key, $method = 'AES-128-ECB', $iv = '', $options = 0)\n {\n \/\/ key\u662f\u5fc5\u987b\u8981\u8bbe\u7f6e\u7684\n $this->secret_key = isset($key) ? $key : 'htTp:\/\/www.yunInDex.com@4806';\n\n $this->method = $method;\n\n $this->iv = $iv;\n\n $this->options = $options;\n }\n\n \/**\n * \u52a0\u5bc6\u65b9\u6cd5\uff0c\u5bf9\u6570\u636e\u8fdb\u884c\u52a0\u5bc6\uff0c\u8fd4\u56de\u52a0\u5bc6\u540e\u7684\u6570\u636e\n *\n * @param string $data \u8981\u52a0\u5bc6\u7684\u6570\u636e\n *\n * @return string\n *\n *\/\n public function encrypt($data)\n {\n return openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);\n }\n\n \/**\n * \u89e3\u5bc6\u65b9\u6cd5\uff0c\u5bf9\u6570\u636e\u8fdb\u884c\u89e3\u5bc6\uff0c\u8fd4\u56de\u89e3\u5bc6\u540e\u7684\u6570\u636e\n *\n * @param string $data \u8981\u89e3\u5bc6\u7684\u6570\u636e\n *\n * @return string\n *\n *\/\n public function decrypt($data)\n {\n return openssl_decrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);\n }\n}<\/pre>
<\/p>
<\/p>\u8fd0\u884c\u7ed3\u679c\uff1a<\/p>
\u8981\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\uff1a\u8fd9\u662f\u52a0\u5bc6\u524d\u7684\u5b57\u7b26\n\u52a0\u5bc6key\u4e3ahttp:\/\/www.hu-rong.com\n\u52a0\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\uff1axNztpX5dgxuXpdd5dcINwgLHA4scqd1rs3LV9ypab48=\n\u8981\u89e3\u5bc6\u7684\u5b57\u7b26\u4e32\uff1axNztpX5dgxuXpdd5dcINwgLHA4scqd1rs3LV9ypab48=\n\u89e3\u5bc6\u540e\u7684\u5b57\u7b26\u4e32\uff1a\u8fd9\u662f\u52a0\u5bc6\u524d\u7684\u5b57\u7b26<\/pre>
<\/p>"}