携程接口加解密

class CtripAesService
{
    private $key = 'xxx';
    private $iv = 'xxx';
    public function aes128_cbc_encrypt($data) {
        $key = $this->key;
        $iv = $this->iv;
        if(16 !== strlen($key)) $key = hash('MD5', $key, true);
        if(16 !== strlen($iv)) $iv = hash('MD5', $iv, true);
        $padding = 16 - (strlen($data) % 16);
        $data .= str_repeat(chr($padding), $padding);
        return $this->encode_bytes(openssl_encrypt($data,'AES-128-CBC',$key,OPENSSL_RAW_DATA,$iv));
    }

    public function aes128_cbc_decrypt($data) {
        $key = $this->key;
        $iv = $this->iv;
        if(16 !== strlen($key)) $key = hash('MD5', $key, true);
        if(16 !== strlen($iv)) $iv = hash('MD5', $iv, true);
        $data=openssl_decrypt( $this->decode_bytes($data), "AES-128-CBC", $key, OPENSSL_RAW_DATA, $iv);
        return $data;
    }

    public function decode_bytes($text){
        $bytes=array();
        for($i=0;$i<strlen($text);$i+=2){
            $char=$text[$i];
            $bytes[$i/2]=chr((ord($char)-ord('a'))<<4);
            $char=$text[$i+1];
            $bytes[$i/2]=chr(ord($bytes[$i/2])+(ord($char)-ord('a')));
        }

        return join('',$bytes);
    }

    public function encode_bytes($text){
        $bytes=array();
        for($i=0;$i<strlen($text);$i++){
            $bytes[]=chr(((ord($text[$i])>>4)&15)+ord('a'));
            $bytes[]=chr((ord($text[$i]) & 15)+ord('a'));
        }

        return join('',$bytes);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值