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

互联网 20-1-10
在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的方法详解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP7
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:编译PHP7扩展(以memcached为例)

相关资讯