$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);分不GO啊

解决方案 »

  1.   

    这个问题我们也遇到了,结果是调用java类解决的
      

  2.   

    //---- 我做过:function mcrypt_3des($input, $key)
    {
    $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
    $blocksize = mcrypt_enc_get_block_size($td);
    $keysize = mcrypt_enc_get_key_size($td);
    $iv_size = mcrypt_enc_get_iv_size($td);
    $iv = mcrypt_create_iv ($iv_size, MCRYPT_RAND);
    $input_len = strlen($input);
    $padsize = $blocksize - ($input_len % $blocksize);
    $input .= str_repeat(pack ('C*', $padsize), $padsize);
    mcrypt_generic_init($td, $key, $iv);
    $crypt = mcrypt_generic ($td,$input);
    return $crypt;
    }$key = base64_decode("xxxxxxxxxxxxxxxx");
    $smsgw_host = "yyy.yyy.yyy.yyy";
    $smsgw_errno = 0;
    $smsgw_errstr = "";
    $smsgw_timeout = 30;
    $AccessTime = date("Y-m-d H:i:s");
    if($UserNumber < 13000000000 || $UserNumber > 13499999999)die("Unknown MobileNo.");
    $input = "1001".chr(36).$UserNumber.chr(36).$order.chr(36).$AccessTime;
    $output = mcrypt_3des($input, $key);
    $output = URLEncode(base64_encode($output));
    $AccessTime = URLEncode($AccessTime);
    $socket = fsockopen($smsgw_host, $smsgw_port, $smsgw_errno, $smsgw_errstr, $smsgw_timeout);
    $cmd = "GET /".$URL.".aspx?SPNumber=1001&AccessTime=$AccessTime&EncodeStr=$output HTTP/1.0\r\n\r\n";fputs($socket, $cmd);
    fclose($socket);
      

  3.   

    $UserNumber   是用户手机号
    $key          是联通给的加密串
    $order        是命令字
    $smsgw_host   是联通服务器地址
    $smsgw_port   是端口
      

  4.   

    多谢 Mistruster(弱智d)!!已经搞掂!!