{"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>"}