京东E卡、优酷土豆会员卡等礼品卡卡信息的解密方法(PHP版)

来源:互联网 发布:obs直播软件 编辑:程序博客网 时间:2024/05/02 10:18

京东E卡、优酷土豆会员卡等礼品卡卡信息的解密方法PHP版。

通用礼品卡接口文档:https://www.juhe.cn/docs/api/id/231,集于各商家(KFC、必胜客、GAP等)实体卡和会员卡的API虚拟卡,可用于线上/下消费、移动支付。

<?php/** * 卡信息的加密和解密 * 加密解密时使用的$key为:substr(str_pad(您的用户名, 8, '0'), 0, 8),即您的用户名(注意是用户名,不是openid)的前8位(不足8位则以0补齐) */  class encrypt {  /**   * 加密   * @param  string $str 待加密的字符串   * @param  string $key 密码   * @return string   */  public function encode($str, $key) {    $key = substr($key, 0, 8);    $iv = $key;    $size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_ECB );    $str = $this->pkcs5Pad ( $str, $size );    $s = mcrypt_encrypt(MCRYPT_DES,$key,$str,MCRYPT_MODE_ECB,$iv);    return base64_encode($s);  }     /**   * 解密   * @param  string $str 待解密的字符串   * @param  string $key 密码   * @return string   */  public function decode($str, $key) {    $iv = $key;    $str = base64_decode($str);    $str = mcrypt_decrypt( MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB, $iv );    $str = $this->pkcs5Unpad( $str );    return $str;  }     public function pkcs5Pad($text, $blocksize) {    $pad = $blocksize - (strlen ( $text ) % $blocksize);    return $text . str_repeat ( chr ( $pad ), $pad );  }     public function pkcs5Unpad($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 );  }} /* 测试加密和解密 */$encrypt = new encrypt();echo $encrypt->encode('1', '12345678');echo '<hr/>';echo $encrypt->decode('g6AtgJul6q0=', '12345678');


0 0
原创粉丝点击