微信一物一码开发文档中原文:
3.1 解密说明
实名数据的加密方式使用AES的CBC模式,iv使用加解密钥,填充使用PKCS7Padding,最后使用base64进行编码。
解密时,先进行base64解码,然后使用密钥及AES/CBC/PKCS7Padding进行解密。 密钥在申请实名接口权限时,会提供到申请方。
解密源码如下:
PHP5 :
public function decode()
{
$key = 'XXXXXXX';
$text = file_get_contents('./uploads/code.txt');
$text = base64_decode($text);
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$iv = substr($key, 0, 16);
mcrypt_generic_init($module, $key, $iv);
//解密
$decrypted = mdecrypt_generic($module, $text);
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
$pkc_encoder = new \PKCS7Encoder;
$result = $pkc_encoder->decode($decrypted);
debug($result);
}
PHP7:
$decrypted = openssl_decrypt($text, 'AES-128-CBC', $key, OPENSSL_CIPHER_AES_128_CBC, $key);
$pkc_encoder = new \PKCS7Encoder;
$result = $pkc_encoder->decode($decrypted);
debug($result);
Node.js:
详见贴吧文章:https://tieba.baidu.com/p/6390324482
3.1 解密说明
实名数据的加密方式使用AES的CBC模式,iv使用加解密钥,填充使用PKCS7Padding,最后使用base64进行编码。
解密时,先进行base64解码,然后使用密钥及AES/CBC/PKCS7Padding进行解密。 密钥在申请实名接口权限时,会提供到申请方。
解密源码如下:
PHP5 :
public function decode()
{
$key = 'XXXXXXX';
$text = file_get_contents('./uploads/code.txt');
$text = base64_decode($text);
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$iv = substr($key, 0, 16);
mcrypt_generic_init($module, $key, $iv);
//解密
$decrypted = mdecrypt_generic($module, $text);
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
$pkc_encoder = new \PKCS7Encoder;
$result = $pkc_encoder->decode($decrypted);
debug($result);
}
PHP7:
$decrypted = openssl_decrypt($text, 'AES-128-CBC', $key, OPENSSL_CIPHER_AES_128_CBC, $key);
$pkc_encoder = new \PKCS7Encoder;
$result = $pkc_encoder->decode($decrypted);
debug($result);
Node.js:
详见贴吧文章:https://tieba.baidu.com/p/6390324482