[JS]java加密封装和php加密封装(2)
二、php代码 ? php classDES1{ var$key; functionDES1($key){ $this- key =$key; } functionencrypt($input){ $ size = mcrypt_get_block_size ('des','ecb'); $ input =$this- pkcs5_pad($input,$size); $ key =$t
二、php代码
- <?php
- class DES1 {
- var $key;
- function DES1($key) {
- $this->key = $key;
- }
- function encrypt($input) {
- $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);
- @mcrypt_generic_init($td, $key, $iv);
- $data = mcrypt_generic($td, $input);
- mcrypt_generic_deinit($td);
- mcrypt_module_close($td);
- $data = base64_encode($data);
- return $data;
- }
- function decrypt($encrypted) {
- $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);
- $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);
- }
- }
- $key = "abcdefgh";
- $input = "a";
- $crypt = new DES1($key);
- echo "Encode:".$crypt->encrypt($input)."<br/>";
- echo "Decode:".$crypt->decrypt($crypt->encrypt($input));
- ?>
- php使用方法
- <?php
- include('DES.php');
- $des = new Crypt_DES();
- $des->setKey('abcdefgh');
- $plaintext = 'a';
- $jiami = base64_encode($des->encrypt($plaintext));
- echo "Encode:".$jiami."<br/>";
- echo "Decode:".$des->decrypt(base64_decode($jiami));
- ?>
热门文章推荐
- [JS]window.location获取url各项参数详解
- [JS]jQuery,javascript获得网页的高度和宽度
- [JS]视频弹窗视频弹出层videoLightBox(含三种播放器的用法)
- [JS]JS提交中文encodeURI两次转码
- [JS]js版方面encodeURI转码和decodeURI解码的用法实例
- [JS]js取当前机子的时间戳实例
- [JS]AES加密(基于crypto-js)PHP后端解密
- [JS]data:image/png;base64写法的用途及说明
请稍候...