您的位置 首页 技术

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

在php7.2中mcrypt已经被废弃了。 用openssl代替它。 例如 public function desEncrypt($str,$key) { $iv = $key; …

在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的方法详解的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/27590.html

为您推荐

返回顶部