您好,欢迎访问一九零五行业门户网

php7.2中mcrypt转openssl的方法详解

在php7.2中mcrypt已经被废弃了。
用openssl代替它。
例如
public function desencrypt($str,$key) { $iv = $key; $size = mcrypt_get_block_size ( mcrypt_des, mcrypt_mode_cbc ); $str = $this->_pkcs5_pad ( $str, $size ); return strtoupper( bin2hex( mcrypt_encrypt(mcrypt_des, $key, $str, mcrypt_mode_cbc, $iv ) ) ); } public function desdecrypt($str,$key) { $iv = $key; $strbin = $this->_hex2bin( strtolower( $str ) ); $str = mcrypt_decrypt( mcrypt_des, $key, $strbin, mcrypt_mode_cbc, $iv ); $str = $this->_pkcs5_unpad( $str ); return $str; } private function _pkcs5_pad($text,$block=8){ $pad = $block - (strlen($text) % $block); return $text . str_repeat(chr($pad), $pad); } private function _pkcs5_unpad($text) { $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) return $text; if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text; return substr($text, 0, -1 * $pad); }
替换后:
//要改的加密 public function desencrypt($str,$key) { // $b = openssl_get_cipher_methods(); // echo '<pre>'; // print_r($b); $iv = $key; // $size = mcrypt_get_block_size ( mcrypt_des, mcrypt_mode_cbc ); // var_dump($size);exit; // $str = $this->_pkcs5_pad ( $str, $size ); // return strtoupper( bin2hex( mcrypt_encrypt(mcrypt_des, $key, $str, mcrypt_mode_cbc, $iv ) ) ); $data = openssl_encrypt($str,"des-cbc",$key,openssl_raw_data,$iv); $data = strtolower(bin2hex($data)); return $data; } //要改的解密 public function desdecrypt($str,$key) { $iv = $key; // $strbin = $this->_hex2bin( strtolower( $str ) ); // $str = mcrypt_decrypt( mcrypt_des, $key, $strbin, mcrypt_mode_cbc, $iv ); // $str = $this->_pkcs5_unpad( $str ); // return $str; return openssl_decrypt (hex2bin($str), 'des-cbc', $key, openssl_raw_data,$iv); }
这些网上都有,在作者使用的过程中因为使用的是mcrypt_des,无法得知openssl对应的是那种加密方式,所以通过手册找到了openssl_get_cipher_methods();该方法可以找出openssl支持的所有方法,进行替换即可。
echo '<pre>';$a = openssl_get_cipher_methods();print_r($a); array( [0] => aes-128-cbc [1] => aes-128-cfb [2] => aes-128-cfb1 [3] => aes-128-cfb8 [4] => aes-128-ctr [5] => aes-128-ecb [6] => aes-128-ofb [7] => aes-128-xts [8] => aes-192-cbc [9] => aes-192-cfb [10] => aes-192-cfb1 [11] => aes-192-cfb8 [12] => aes-192-ctr [13] => aes-192-ecb [14] => aes-192-ofb [15] => aes-256-cbc [16] => aes-256-cfb [17] => aes-256-cfb1 [18] => aes-256-cfb8 [19] => aes-256-ctr [20] => aes-256-ecb [21] => aes-256-ofb [22] => aes-256-xts [23] => bf-cbc [24] => bf-cfb [25] => bf-ecb [26] => bf-ofb [27] => camellia-128-cbc [28] => camellia-128-cfb [29] => camellia-128-cfb1 [30] => camellia-128-cfb8 [31] => camellia-128-ecb [32] => camellia-128-ofb [33] => camellia-192-cbc [34] => camellia-192-cfb [35] => camellia-192-cfb1 [36] => camellia-192-cfb8 [37] => camellia-192-ecb [38] => camellia-192-ofb [39] => camellia-256-cbc [40] => camellia-256-cfb [41] => camellia-256-cfb1 [42] => camellia-256-cfb8 [43] => camellia-256-ecb [44] => camellia-256-ofb [45] => cast5-cbc [46] => cast5-cfb [47] => cast5-ecb [48] => cast5-ofb [49] => des-cbc [50] => des-cfb [51] => des-cfb1 [52] => des-cfb8 [53] => des-ecb [54] => des-ede [55] => des-ede-cbc [56] => des-ede-cfb [57] => des-ede-ofb [58] => des-ede3 [59] => des-ede3-cbc [60] => des-ede3-cfb [61] => des-ede3-cfb1 [62] => des-ede3-cfb8 [63] => des-ede3-ofb [64] => des-ofb [65] => desx-cbc [66] => idea-cbc [67] => idea-cfb [68] => idea-ecb [69] => idea-ofb [70] => rc2-40-cbc [71] => rc2-64-cbc [72] => rc2-cbc [73] => rc2-cfb [74] => rc2-ecb [75] => rc2-ofb [76] => rc4 [77] => rc4-40 [78] => rc4-hmac-md5 [79] => seed-cbc [80] => seed-cfb [81] => seed-ecb [82] => seed-ofb [83] => aes-128-cbc [84] => aes-128-cfb [85] => aes-128-cfb1 [86] => aes-128-cfb8 [87] => aes-128-ctr [88] => aes-128-ecb [89] => aes-128-gcm [90] => aes-128-ofb [91] => aes-128-xts [92] => aes-192-cbc [93] => aes-192-cfb [94] => aes-192-cfb1 [95] => aes-192-cfb8 [96] => aes-192-ctr [97] => aes-192-ecb [98] => aes-192-gcm [99] => aes-192-ofb [100] => aes-256-cbc [101] => aes-256-cfb [102] => aes-256-cfb1 [103] => aes-256-cfb8 [104] => aes-256-ctr [105] => aes-256-ecb [106] => aes-256-gcm [107] => aes-256-ofb [108] => aes-256-xts [109] => bf-cbc [110] => bf-cfb [111] => bf-ecb [112] => bf-ofb [113] => camellia-128-cbc [114] => camellia-128-cfb [115] => camellia-128-cfb1 [116] => camellia-128-cfb8 [117] => camellia-128-ecb [118] => camellia-128-ofb [119] => camellia-192-cbc [120] => camellia-192-cfb [121] => camellia-192-cfb1 [122] => camellia-192-cfb8 [123] => camellia-192-ecb [124] => camellia-192-ofb [125] => camellia-256-cbc [126] => camellia-256-cfb [127] => camellia-256-cfb1 [128] => camellia-256-cfb8 [129] => camellia-256-ecb [130] => camellia-256-ofb [131] => cast5-cbc [132] => cast5-cfb [133] => cast5-ecb [134] => cast5-ofb [135] => des-cbc [136] => des-cfb [137] => des-cfb1 [138] => des-cfb8 [139] => des-ecb [140] => des-ede [141] => des-ede-cbc [142] => des-ede-cfb [143] => des-ede-ofb [144] => des-ede3 [145] => des-ede3-cbc [146] => des-ede3-cfb [147] => des-ede3-cfb1 [148] => des-ede3-cfb8 [149] => des-ede3-ofb [150] => des-ofb [151] => desx-cbc [152] => id-aes128-gcm [153] => id-aes192-gcm [154] => id-aes256-gcm [155] => idea-cbc [156] => idea-cfb [157] => idea-ecb [158] => idea-ofb [159] => rc2-40-cbc [160] => rc2-64-cbc [161] => rc2-cbc [162] => rc2-cfb [163] => rc2-ecb [164] => rc2-ofb [165] => rc4 [166] => rc4-40 [167] => rc4-hmac-md5 [168] => seed-cbc [169] => seed-cfb [170] => seed-ecb [171] => seed-ofb)
希望对您有用。
更多相关php7文章请访问:《php7》教程
以上就是php7.2中mcrypt转openssl的方法详解的详细内容。
其它类似信息

推荐信息