php 7.2最新加密函数,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 '

';

// 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 '

';

$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》教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值