PHP des加密(1
2019-10-07
PHP
1552
// 自定义的DES加解密类 class Des_lib { public $key; public $iv; function __construct($key,$iv='') { $this->key = $key; $this->iv = $iv; } function encrypt($input) { if (version_compare(PHP_VERSION, '7.1', '>=')) { return base64_encode(openssl_encrypt($input, 'des-cbc', $this->key, true,$this->iv)); } else { $size = mcrypt_get_block_size('des', 'ecb'); $input = $this->pkcs5_pad($input, $size); $key = $this->key; $td = mcrypt_module_open('des', '', 'ecb', ''); $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $iv = $this->iv; @mcrypt_generic_init($td, $key, $iv); $data = mcrypt_generic($td, $input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = base64_encode($data); return preg_replace("/\s*/", '',$data); } } function decrypt($encrypted) { if (version_compare(PHP_VERSION, '7.1', '>=')) { return openssl_decrypt(base64_decode($encrypted), 'des-cbc', $this->key, true,$this->iv); } else { $encrypted = base64_decode($encrypted); $key =$this->key; $td = mcrypt_module_open('des','','ecb',''); //使用MCRYPT_DES算法,cbc模式 $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $iv = $this->iv; $ks = mcrypt_enc_get_key_size($td); @mcrypt_generic_init($td, $key, $iv); //初始处理 $decrypted = @mdecrypt_generic($td, $encrypted); //解密 mcrypt_generic_deinit($td); //结束 mcrypt_module_close($td); $y=$this->pkcs5_unpad($decrypted); return $y; } } function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } function pkcs5_unpad($text) { $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) return false; if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; return substr($text, 0, -1 * $pad); } } $des = new Des_lib('12345678','98765432'); echo $s = $des->encrypt('99999999'); echo "\n"; echo $des->decrypt($s);
很赞哦! (0)
相关文章
文章评论
-
-
-
0条评论