php72国政通实名认证DES加解密实录

国政通实名认证采用DES-CBC加解密算法,之前一直使用mcrypt模块中的方法,但是在php72中已经被弃用,本文采用openssl加密来进行封装,干净简洁。 本过程需要php开启 openssl、soap、mbstring扩展
  • DES-CBC加解密类
class DES_CBC
{
private $key;
private $iv;

/**
* DES_CBC constructor.
* @param $key 加密使用的key
* @param $iv 初始向量
*/
function __construct ($key, $iv)
{
$this->key = $key;
$this->iv = $iv;
}

/**
* des-cbc加密
* @param string $data
* @return string
*/
public function encrypt ($data = '')
{
return openssl_encrypt($data, 'des-cbc', $this->key, 0, $this->iv);
}

/**
* des-cbc解密
* @param string $data
* @return string
*/
public function decrypt ($data = '')
{
return openssl_decrypt($data, 'des-cbc', $this->key, 0, $this->iv);
}

}
  • 请求执行
$info = '姓名,身份证号码';

$key = '12345678';
$iv = '12345678';

$partner = 'partner';
$partnerPW = 'partnerPW';
$type = 'type';

$DES = new DES_CBC($key, $iv);
// 将中文转码
$info = mb_convert_encoding($info, "GBK", "UTF-8");
$params = [
"userName_" => $DES->encrypt($partner),
"password_" => $DES->encrypt($partnerPW),
"type_" => $DES->encrypt($type),
"param_" => $DES->encrypt($info),
];

// 查询请求,注:请求IP需联系国政通进行加白
$soap = new SoapClient ("http://gboss.id5.cn/services/QueryValidatorServices?wsdl");
$data = $soap->querySingle($params);
$resultXML = $DES->decrypt($data->querySingleReturn);
$resultXML = mb_convert_encoding($resultXML, "UTF-8", "GBK");

// 查看返回结果
print_r($resultXML);
<?xml version=”1.0″ encoding=”UTF-8″?>
<data>
<message>
<status>0</status>
<value>处理成功</value>
</message>
<policeCheckInfos>
<policeCheckInfo name=”姓名” id=”身份证号码”>
<message>
<status>0</status>
<value>查询成功</value>
</message>
<name desc=”姓名”>姓名</name>
<identitycard desc=”身份证号”>身份证号码</identitycard>
<compStatus desc=”比对状态”>3</compStatus>
<compResult desc=”比对结果”>一致</compResult>
<checkPhoto desc=”照片” />
<no desc=”唯一标识”>40288936679cb8b60167de5011914e59</no>
</policeCheckInfo>
</policeCheckInfos>
</data>
Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注