php里面des加密解密,与java可以互…

来源:互联网 发布:mysql 视图查询效率 编辑:程序博客网 时间:2024/06/16 11:29
前些时做139邮箱时,遇到一个des加密的接口,对方是jsp的接口,要我是用php调,

找了很多方法都不能正确加密码解,最后终于加到一个比较好的方法,代码如下,供有需要的朋友使用。


public class des{

function encrypt($encrypt ,$key) {
    $encrypt =$this->pkcs5_pad($encrypt);
    $iv =mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB),MCRYPT_RAND);
    $passcrypt =mcrypt_encrypt(MCRYPT_DES, $key, $encrypt, MCRYPT_MODE_ECB,$iv);
    returnbin2hex($passcrypt);
    }

    functiondecrypt($decrypt,$key) {
      $decoded = pack("H*", $decrypt);
      $iv =mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB),MCRYPT_RAND);
      $decrypted = mcrypt_decrypt(MCRYPT_DES, $key,$decoded, MCRYPT_MODE_ECB, $iv);
      return$this->pkcs5_unpad($decrypted);
    }

    functionpkcs5_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);
    }

    functionpkcs5_pad($text){
      $len = strlen($text);
      $mod = $len % 8;
      $pad = 8 - $mod;
      return $text.str_repeat(chr($pad),$pad);
   
encrypt($phoneNumber,'123456');
}
原创粉丝点击