`
lij2960
  • 浏览: 17642 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

PHP DES加密解密封装类

    博客分类:
  • PHP
 
阅读更多
<?php
/**
* PHP版DES加解密类
* 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容
*
*/
class CryptDes {
     var $key;
     var $iv;
     function CryptDes($key, $iv){
        $this->key = $key;
        $this->iv = $iv;
     }
    
     function encrypt($input){
         $size = mcrypt_get_block_size(MCRYPT_DES,MCRYPT_MODE_CBC); //3DES加密将MCRYPT_DES改为MCRYPT_3DES
         $input = $this->pkcs5_pad($input, $size); //如果采用PaddingPKCS7,请更换成PaddingPKCS7方法。
         $key = str_pad($this->key,8,'0'); //3DES加密将8改为24
         $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, '');
         if( $this->iv == '' )
         {
             $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
         }
         else
         {
             $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);//如需转换二进制可改成  bin2hex 转换
         return $data;
     }

     function decrypt($encrypted){
         $encrypted = base64_decode($encrypted); //如需转换二进制可改成  bin2hex 转换
         $key = str_pad($this->key,8,'0'); //3DES加密将8改为24
         $td = mcrypt_module_open(MCRYPT_DES,'',MCRYPT_MODE_CBC,'');//3DES加密将MCRYPT_DES改为MCRYPT_3DES
          if( $this->iv == '' )
         {
             $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
         }
         else
         {
             $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);
     }

     function PaddingPKCS7($data) {
         $block_size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);//3DES加密将MCRYPT_DES改为MCRYPT_3DES
         $padding_char = $block_size - (strlen($data) % $block_size);
         $data .= str_repeat(chr($padding_char),$padding_char);
         return $data;
     }
}

$des = new CryptDes("12345678","12345678");//(秘钥向量,混淆向量)
echo $ret = $des->encrypt("1111");//加密字符串
?>

 

分享到:
评论

相关推荐

    PHP实现的DES加密解密封装类完整实例

    本文实例讲述了PHP实现的DES加密解密封装类。分享给大家供大家参考,具体如下: &lt;?php /** * PHP版DES加解密类 * 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容 * */ class CryptDes { var $key; var $...

    php实现的加密解密处理类.zip

    这个压缩包提供的“加密解密处理类”可能是为了简化这个过程,提供了一种封装好的解决方案。它可能包含以下功能: 1. 支持多种加密算法:类库可能会提供对多种加密算法的支持,允许开发者根据需求选择合适的算法。 ...

    php des加密类

    这个"php des加密类"可能是一个自定义的PHP类,用于实现DES加密和解密功能。以下是对这个主题的详细说明: 1. **DES算法原理**: DES是一种分组密码,它将明文数据分成64位的数据块进行处理,其中包含72个有效位,...

    php中加密解密字符串函数类.zip

    这个压缩包中的“php中加密解密字符串函数类”很可能是这样一个自定义类,它封装了常见的加密解密算法,可能包括AES(高级加密标准)、DES(数据加密标准)或RSA(非对称加密)等。 此类库可能会包含以下几个核心...

    PHP加密解密实用类.zip

    这个"PHP加密解密实用类"压缩包提供了一系列工具,帮助开发者更方便地进行数据加密与解密操作,确保信息安全。下面我们将深入探讨PHP加密解密的相关知识点。 1. **加密算法基础** - **MD5**:Message-Digest ...

    Delphi的加解密封装单元 - Cryptography (目前只支持AES/DES/MD5)

    这个Cryptography单元的亮点在于它将这些加密算法以静态成员的形式封装起来,这意味着开发者无需创建对象实例,直接调用类方法即可使用加密和解密功能。这种设计提高了代码的简洁性和易用性,减少了内存开销,对于...

    php中加密解密字符串函数类

    为了封装这些功能,你可以创建一个自定义的加密解密字符串函数类,如`CryptoManager`,包含`encrypt()`和`decrypt()`方法。这个类可以处理不同的加密算法,并提供统一的接口。类中的关键部分可能包括选择合适的加密...

    JS及PHP和Delphi通用DES加密模块

    1. **DES.PHP**:这是一个PHP实现的DES加密类,可能包含了对原始DES算法的封装,允许PHP开发者轻松调用。 2. **DemoCrypt.dpr**:这是Delphi项目的主要入口文件,通常包含项目的启动代码和主窗体定义。 3. **des.js*...

    php中加密解密DES类的简单使用方法示例

    这里所说的DES类,通常是指在PHP中通过面向对象的方式封装好的DES加密解密方法。在早期版本的PHP中,DES加密解密往往依赖于mcrypt扩展,然而,从PHP 7.1.0开始,mcrypt扩展不再推荐使用,在PHP 7.2.0版本中被完全...

    AES加密/解密,C,java,delphi互解

    在Java中,AES的实现通常依赖于`javax.crypto`包中的类,如`Cipher`用于执行加密和解密操作,`SecretKeySpec`用于创建密钥,以及`KeySpec`接口来处理不同的密钥规范。Java的AES实现遵循Java Cryptography Extension ...

    DES+对称+加密+(java实现)

    以十六进制字符显示密文,中文亦可实现,(GUI界面类及加密解密实现类)

    易语言-易语言3DES加解密

    在这里,Java编写的3DES加密解密模块被封装到JAR中,然后在易语言中通过调用Java的JNI(Java Native Interface)接口来使用这些功能。 JNI是Java平台提供的一种机制,它允许Java代码和其他语言写的代码进行交互。...

    PHP7.1实现的AES与RSA加密操作示例

    RSA加密解密工具可以在线进行公钥加密和私钥解密操作,而文字在线加密解密工具支持多种算法(AES、DES、RC4等)进行加密和解密。散列算法加密工具则提供了多种散列算法,如MD5、SHA-1、SHA-256等,供用户使用。 4. ...

    encryptlib

    encrypt.lib.php是这个加密库的主要源代码文件,它可能封装了各种加密和解密操作,以及密钥管理、随机数生成、哈希计算等相关功能。开发者可以通过引用这个文件,然后调用其提供的类和方法来实现加密和解密。 在...

    php常用的28个类,开发必备

    8. **加密解密处理类**:这类类实现了各种加密算法,如AES、DES、RSA等,用于保护敏感数据的安全,确保信息传输的保密性。 9. **文件上传类**:文件上传类处理单个或多个文件的上传,通常包括错误检查、文件类型...

    pcrypt-开源

    mcrypt扩展是PHP中用于加密和解密数据的一个重要工具,它支持对称加密算法,如DES、3DES、AES等,以及一些非对称加密算法。这些算法的安全性较高,能够有效地防止未经授权的数据访问。 在压缩包文件"pcrypt_0.0.3-...

    mcrypt2openssl:研究PHP中从Mcrypt扩展到OpenSSL的过渡代码

    Mcrypt是PHP的一个加密模块,提供了多种加密算法和模式,如AES、DES、3DES等。它提供了一个易于使用的API,允许开发者方便地进行加密和解密操作。然而,由于Mcrypt不再得到维护,存在安全风险,因此推荐使用更为现代...

    JAVA上百实例源码以及开源项目源代码

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

Global site tag (gtag.js) - Google Analytics