RSSL_PAD_ISO10126 php

时间:2015-05-13 14:02:08

标签: php oracle encryption aes

我有一个客户端使用oracle传递身份验证,我无法正确加密。

这是我从客户那里获得的所有信息:

  1. secretKey =给我的32个字符串
  2. 要加密的参数列表。
  3. 编码方法是Base 64编码。
  4. 加密方法是aes256。
  5. KegGen方法是PKCS5-V20。
  6. 填充方法是RSSL_PAD_ISO10126。
  7. 要确保网址安全,必须更换某些字符。 (+变成_; /变成〜;并且变成*)。
  8. 到目前为止,我有以下代码,但我不是100%我正在进行加密,并且还不知道如何实现RSSL_PAD_ISO10126填充,或者如何处理PKCS5-V20 keygen。我在这里发现另一篇文章解释说aes256加密是MCRYPT_RIJNDAEL_128。任何有关如何进行的信息将不胜感激。

    public static function ptaLink($pid, $params = [])
    {
        $url = \Config::get('chat.ptaBaseUrl');
    
        $params['p_userid'] = $pid;
        $params['p_ccf_1'] = $pid;
    
        $ptaDataString = self::buildParams($params);
    
        return $url.$ptaDataString;
    }
    
    public static function buildParams($params) {
    
        $defaultParams = [
            'p_userid' => '', // PID
            'p_passwd' => '',
            'p_ccf_1' => '', // PID
            'p_li_expiry' => time(),
        ];
    
        $params = array_merge($defaultParams, $params);
    
        //Convert PTA data array to string
        $ptaDataString = "";
        foreach($params as $key=>$value)
        {
            $ptaDataString .= ($ptaDataString === "") ? '' : '&';
            $ptaDataString .= "$key=$value";
        }
    
        $ptaDataString = self::encryptData($ptaDataString);
    
        return $ptaDataString;
    }
    
    public static function encryptData($text) {
    
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
        $key = \Config::get('chat.secretKey');
    
        $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
    
        //Base64 encode the data
        $ptaDataString = base64_encode($crypttext);
    
        //Make sure the data is URL safe
        $ptaDataString = strtr($ptaDataString, array('+' => '_', '/' => '~', '=' => '*'));
    
        return $ptaDataString;
    
    }
    

1 个答案:

答案 0 :(得分:0)

此处为任何需要此功能的人this post

实施