{"componentChunkName":"component---src-templates-acg-portal-new-template-tsx","path":"/Xmhaazmyd","result":{"data":{"markdownRemark":{"html":"<h2 id=\"接口描述\"><a href=\"#%E6%8E%A5%E5%8F%A3%E6%8F%8F%E8%BF%B0\" aria-label=\"接口描述 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>接口描述</h2>\n<p>支持对二代居民身份证正反面所有8个字段进行结构化识别，包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限，识别准确率超过99%；同时支持身份证正面头像检测，并返回头像切片的base64编码及位置信息。</p>\n<p>同时，支持对用户上传的身份证图片进行图像质量和风险检测，是否存在正反颠倒、模糊、欠曝、过曝等质量问题，可识别图片是否为复印件或临时身份证，是否被翻拍、截屏或编辑，是否存在四角不完整、头像或关键字段被遮挡。</p>\n<table>\n     <tr>\n         <th>增值能力</th>  \n         <th>详情</th>  \n     </tr>\n  <tr>\n      <td rowspan=\"2\">裁剪能力</td> \n      <td>头像检测与切片：返回头像切片的base64编码及位置信息</td>   \n  </tr> \n  <tr>\n      <td>身份证检测与切片：返回身份证的base64编码及位置信息（去掉证件外围多余背景、自动矫正拍摄角度）</td>\n  </tr> \n    <tr>      \n      <td rowspan=\"5\">质量检测</td>   \n      <td> 身份证图片模糊检测 </td>   \n  </tr> \n  <tr>\n      <td> 身份证关键字段反光或过曝光 </td>   \n  </tr> \n  <tr>      \n      <td> 身份证图片较暗或欠曝光 </td>      \n  </tr> \n  <tr>      \n      <td> 身份证边框/四角不完整告警 </td>      \n  </tr> \n  <tr>      \n      <td> 身份证头像或关键字段被遮挡/马赛克告警 </td>      \n  </tr> \n  <tr>      \n      <td rowspan=\"7\">风险检测</td>   \n      <td> 身份证复印件/扫描件告警 </td>   \n     </tr> \n  <tr>\n      <td> 临时身份证告警 </td>   \n  </tr> \n  <tr>      \n      <td> 身份证翻拍告警 </td>   \n  </tr> \n  <tr>      \n      <td> 身份证截屏告警 </td>   \n  </tr> \n    <tr>      \n      <td> 身份证PS编辑告警 </td>      \n  </tr> \n  </tr> \n    <tr>      \n      <td> 身份证证号不合法告警 </td>    \n      </tr> \n  </tr> \n  </tr> \n    <tr>    \n      <td> 身份证证号和出生日期、性别信息不一致告警 </td>      \n</table>\n<blockquote>\n<p>视频教程请参见 <a href=\"https://cloud.baidu.com/video-center/video.html?id=698\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">身份证识别API调用教程（视频版）</a></p>\n</blockquote>\n<h2 id=\"在线调试\"><a href=\"#%E5%9C%A8%E7%BA%BF%E8%B0%83%E8%AF%95\" aria-label=\"在线调试 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>在线调试</h2>\n<p><strong>您可以在 <a href=\"https://console.bce.baidu.com/tools/?_=1668473684721#/api?product=AI&#x26;project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&#x26;parent=%E5%8D%A1%E8%AF%81OCR&#x26;api=rest/2.0/ocr/v1/idcard&#x26;method=post\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">示例代码中心</a> 中调试该接口</strong>，可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。</p>\n<h2 id=\"请求说明\"><a href=\"#%E8%AF%B7%E6%B1%82%E8%AF%B4%E6%98%8E\" aria-label=\"请求说明 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>请求说明</h2>\n<p><strong>请求示例</strong></p>\n<p>HTTP 方法：<code>POST</code></p>\n<p>请求URL： <code>https://aip.baidubce.com/rest/2.0/ocr/v1/idcard</code></p>\n<p>URL参数：</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>access_token</td>\n<td>通过API Key和Secret Key获取的access_token,参考“<a href=\"https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Access Token获取</a>”</td>\n</tr>\n</tbody>\n</table>\n<p>Header如下：</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Content-Type</td>\n<td>application/x-www-form-urlencoded</td>\n</tr>\n</tbody>\n</table>\n<p>Body中放置请求参数，参数详情如下：</p>\n<p><strong>请求参数</strong></p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>是否必选</th>\n<th>类型</th>\n<th>可选值范围</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>image</td>\n<td>和url二选一</td>\n<td>string</td>\n<td>-</td>\n<td>图像数据，base64编码后进行urlencode，需去掉编码头（data:image/jpeg;base64, ）</br> 要求base64编码和urlencode后大小不超过8M，最短边至少15px，最长边最大8192px，支持jpg/jpeg/png/bmp格式</td>\n</tr>\n<tr>\n<td>url</td>\n<td>和image二选一</td>\n<td>string</td>\n<td>-</td>\n<td>图片完整URL，URL长度不超过1024字节，URL对应的图片base64编码后大小不超过8M，最短边至少15px，最长边最大8192px，支持jpg/jpeg/png/bmp格式，当image字段存在时url字段失效</br>请注意关闭URL防盗链</td>\n</tr>\n<tr>\n<td>id_card_side</td>\n<td>是</td>\n<td>string</td>\n<td>front/back</td>\n<td>-front：身份证含照片的一面</br>-back：身份证带国徽的一面</br>自动检测身份证正反面，如果传参指定方向与图片相反，支持正常识别，返回参数image_status字段为\"reversed_side\"</td>\n</tr>\n<tr>\n<td>detect_ps</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否检测上传的身份证被PS，默认不检测。可选值：</br>-true：检测； </br>- false：不检测</td>\n</tr>\n<tr>\n<td>detect_risk</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否开启身份证风险类型（身份证复印件/扫描件、临时身份证、身份证翻拍/截屏、修改过的身份证）检测功能，默认不开启，即：false。</br>- true：开启，请查看返回参数risk_type；</br>- false：不开启</td>\n</tr>\n<tr>\n<td>detect_quality</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否开启身份证质量类型（清晰模糊、边框/四角不完整、头像或关键字段被遮挡/马赛克）检测功能，默认不开启，即：false。</br>- true：开启，请查看返回参数card_quality；</br>- false：不开启</td>\n</tr>\n<tr>\n<td>detect_photo</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否检测头像内容，默认不检测，即：false。</br>- true：检测头像并返回头像的 base64 编码及位置信息；</br>- false：不检测</td>\n</tr>\n<tr>\n<td>detect_card</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否检测身份证进行裁剪，默认不检测，即：false。</br>- true：检测身份证并返回证照的 base64 编码及位置信息； </br>- false：不检测</td>\n</tr>\n<tr>\n<td>detect_direction</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否检测上传的身份证图片方向，默认不检测，即：false。</br>- true：检测； </br>- false：不检测</td>\n</tr>\n<tr>\n<td>detect_screenshot</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否细分输出截屏风险类型，当 detect_risk =ture 时，该参数才生效。默认不开启，即：false。</br>- true：开启，将在 risk_type 细分输出 screenshot 截屏类型； </br>- false：不开启，risk_type 将合并 screenshot 截屏到 screen 翻拍类型输出</td>\n</tr>\n</tbody>\n</table>\n<p><strong>请求代码示例</strong></p>\n<p><strong>提示一</strong>：使用示例代码前，请记得替换其中的示例Token、图片地址或Base64信息。</p>\n<p><strong>提示二</strong>：部分语言依赖的类或库，请在代码注释中查看下载地址。</p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <div class=\"code-block-inner-tabs doc-tab-group\">\n                \n        <label\n            for=\"code-block-group-0-radio-0\"\n            class=\"doc-tab-item doc-tab-item-selected\"\n            data-index=\"0\"\n        >\n            <span class=\"doc-tab-item-label\">Bash</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-0-radio-1\"\n            class=\"doc-tab-item \"\n            data-index=\"1\"\n        >\n            <span class=\"doc-tab-item-label\">Python</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-0-radio-2\"\n            class=\"doc-tab-item \"\n            data-index=\"2\"\n        >\n            <span class=\"doc-tab-item-label\">JAVA</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-0-radio-3\"\n            class=\"doc-tab-item \"\n            data-index=\"3\"\n        >\n            <span class=\"doc-tab-item-label\">C++</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-0-radio-4\"\n            class=\"doc-tab-item \"\n            data-index=\"4\"\n        >\n            <span class=\"doc-tab-item-label\">PHP</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-0-radio-5\"\n            class=\"doc-tab-item \"\n            data-index=\"5\"\n        >\n            <span class=\"doc-tab-item-label\">C#</span>\n        </label>\n        \n                <div class=\"code-block-inner-tab-thumb doc-tab-thumb\"></div>\n                </div>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-inner-tab-content doc-tab-content-wrapper\">\n                \n        <input\n            id=\"code-block-group-0-radio-0\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-0\"\n            checked=\"\"\n            data-index=\"0\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-bash\"><code><span class=\"line-number\">1</span><span class=\"token function\">curl</span> -i -k <span class=\"token string\">'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=【调用鉴权接口获取的token】'</span> --data <span class=\"token string\">'id_card_side=front&amp;image=【图片Base64编码，需UrlEncode】'</span> -H <span class=\"token string\">'Content-Type:application/x-www-form-urlencoded'</span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-0-radio-1\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-0\"\n            \n            data-index=\"1\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-python\"><code><span class=\"line-number\">1</span><span class=\"token comment\"># encoding:utf-8</span>\n<span class=\"line-number\">2</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">import</span> requests\n<span class=\"line-number\">4</span><span class=\"token keyword\">import</span> base64\n<span class=\"line-number\">5</span>\n<span class=\"line-number\">6</span><span class=\"token triple-quoted-string string\">'''\n<span class=\"line-number\">7</span>身份证识别\n<span class=\"line-number\">8</span>'''</span>\n<span class=\"line-number\">9</span>\n<span class=\"line-number\">10</span>request_url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard\"</span>\n<span class=\"line-number\">11</span><span class=\"token comment\"># 二进制方式打开图片文件</span>\n<span class=\"line-number\">12</span>f <span class=\"token operator\">=</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">'[本地文件]'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'rb'</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">13</span>img <span class=\"token operator\">=</span> base64<span class=\"token punctuation\">.</span>b64encode<span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">14</span>\n<span class=\"line-number\">15</span>params <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"id_card_side\"</span><span class=\"token punctuation\">:</span><span class=\"token string\">\"front\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"image\"</span><span class=\"token punctuation\">:</span>img<span class=\"token punctuation\">}</span>\n<span class=\"line-number\">16</span>access_token <span class=\"token operator\">=</span> <span class=\"token string\">'[调用鉴权接口获取的token]'</span>\n<span class=\"line-number\">17</span>request_url <span class=\"token operator\">=</span> request_url <span class=\"token operator\">+</span> <span class=\"token string\">\"?access_token=\"</span> <span class=\"token operator\">+</span> access_token\n<span class=\"line-number\">18</span>headers <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token string\">'content-type'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'application/x-www-form-urlencoded'</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">19</span>response <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>post<span class=\"token punctuation\">(</span>request_url<span class=\"token punctuation\">,</span> data<span class=\"token operator\">=</span>params<span class=\"token punctuation\">,</span> headers<span class=\"token operator\">=</span>headers<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">20</span><span class=\"token keyword\">if</span> response<span class=\"token punctuation\">:</span>\n<span class=\"line-number\">21</span>    <span class=\"token keyword\">print</span> <span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-0-radio-2\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-0\"\n            \n            data-index=\"2\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-java\"><code><span class=\"line-number\">1</span><span class=\"token keyword\">package</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>baidu<span class=\"token punctuation\">.</span>ai<span class=\"token punctuation\">.</span>aip</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">2</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>baidu<span class=\"token punctuation\">.</span>ai<span class=\"token punctuation\">.</span>aip<span class=\"token punctuation\">.</span>utils</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">Base64Util</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">4</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>baidu<span class=\"token punctuation\">.</span>ai<span class=\"token punctuation\">.</span>aip<span class=\"token punctuation\">.</span>utils</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">FileUtil</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">5</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>baidu<span class=\"token punctuation\">.</span>ai<span class=\"token punctuation\">.</span>aip<span class=\"token punctuation\">.</span>utils</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">HttpUtil</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">6</span>\n<span class=\"line-number\">7</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">java<span class=\"token punctuation\">.</span>net</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">URLEncoder</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">8</span>\n<span class=\"line-number\">9</span><span class=\"token comment\">/**\n<span class=\"line-number\">10</span>* 身份证识别\n<span class=\"line-number\">11</span>*/</span>\n<span class=\"line-number\">12</span><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Idcard</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">13</span>\n<span class=\"line-number\">14</span>    <span class=\"token comment\">/**\n<span class=\"line-number\">15</span>    * 重要提示代码中所需工具类\n<span class=\"line-number\">16</span>    * FileUtil,Base64Util,HttpUtil,GsonUtils请从\n<span class=\"line-number\">17</span>    * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72\n<span class=\"line-number\">18</span>    * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2\n<span class=\"line-number\">19</span>    * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3\n<span class=\"line-number\">20</span>    * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3\n<span class=\"line-number\">21</span>    * 下载\n<span class=\"line-number\">22</span>    */</span>\n<span class=\"line-number\">23</span>    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">24</span>        <span class=\"token comment\">// 请求url</span>\n<span class=\"line-number\">25</span>        <span class=\"token class-name\">String</span> url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">26</span>        <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">27</span>            <span class=\"token comment\">// 本地文件路径</span>\n<span class=\"line-number\">28</span>            <span class=\"token class-name\">String</span> filePath <span class=\"token operator\">=</span> <span class=\"token string\">\"[本地文件路径]\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">29</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> imgData <span class=\"token operator\">=</span> <span class=\"token class-name\">FileUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">readFileByBytes</span><span class=\"token punctuation\">(</span>filePath<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">30</span>            <span class=\"token class-name\">String</span> imgStr <span class=\"token operator\">=</span> <span class=\"token class-name\">Base64Util</span><span class=\"token punctuation\">.</span><span class=\"token function\">encode</span><span class=\"token punctuation\">(</span>imgData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">31</span>            <span class=\"token class-name\">String</span> imgParam <span class=\"token operator\">=</span> <span class=\"token class-name\">URLEncoder</span><span class=\"token punctuation\">.</span><span class=\"token function\">encode</span><span class=\"token punctuation\">(</span>imgStr<span class=\"token punctuation\">,</span> <span class=\"token string\">\"UTF-8\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">32</span>\n<span class=\"line-number\">33</span>            <span class=\"token class-name\">String</span> param <span class=\"token operator\">=</span> <span class=\"token string\">\"id_card_side=\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"front\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;image=\"</span> <span class=\"token operator\">+</span> imgParam<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">34</span>\n<span class=\"line-number\">35</span>            <span class=\"token comment\">// 注意这里仅为了简化编码每一次请求都去获取access_token，线上环境access_token有过期时间， 客户端可自行缓存，过期后重新获取。</span>\n<span class=\"line-number\">36</span>            <span class=\"token class-name\">String</span> accessToken <span class=\"token operator\">=</span> <span class=\"token string\">\"[调用鉴权接口获取的token]\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">37</span>\n<span class=\"line-number\">38</span>            <span class=\"token class-name\">String</span> result <span class=\"token operator\">=</span> <span class=\"token class-name\">HttpUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">post</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> accessToken<span class=\"token punctuation\">,</span> param<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">39</span>            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">40</span>            <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">41</span>        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Exception</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">42</span>            e<span class=\"token punctuation\">.</span><span class=\"token function\">printStackTrace</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">43</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">44</span>        <span class=\"token keyword\">return</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">45</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">46</span>\n<span class=\"line-number\">47</span>    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">48</span>        <span class=\"token class-name\">Idcard</span><span class=\"token punctuation\">.</span><span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">49</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">50</span><span class=\"token punctuation\">}</span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-0-radio-3\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-0\"\n            \n            data-index=\"3\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-cpp\"><code><span class=\"line-number\">1</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;iostream></span></span>\n<span class=\"line-number\">2</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;curl/curl.h></span></span>\n<span class=\"line-number\">3</span>\n<span class=\"line-number\">4</span><span class=\"token comment\">// libcurl库下载链接：https://curl.haxx.se/download.html</span>\n<span class=\"line-number\">5</span><span class=\"token comment\">// jsoncpp库下载链接：https://github.com/open-source-parsers/jsoncpp/</span>\n<span class=\"line-number\">6</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">static</span> std<span class=\"token operator\">::</span>string request_url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">7</span><span class=\"token keyword\">static</span> std<span class=\"token operator\">::</span>string idcard_result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">8</span><span class=\"token comment\">/**\n<span class=\"line-number\">9</span> * curl发送http请求调用的回调函数，回调函数中对返回的json格式的body进行了解析，解析结果储存在全局的静态变量当中\n<span class=\"line-number\">10</span> * @param 参数定义见libcurl文档\n<span class=\"line-number\">11</span> * @return 返回值定义见libcurl文档\n<span class=\"line-number\">12</span> */</span>\n<span class=\"line-number\">13</span><span class=\"token keyword\">static</span> size_t <span class=\"token function\">callback</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span> <span class=\"token operator\">*</span>ptr<span class=\"token punctuation\">,</span> size_t size<span class=\"token punctuation\">,</span> size_t nmemb<span class=\"token punctuation\">,</span> <span class=\"token keyword\">void</span> <span class=\"token operator\">*</span>stream<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">14</span>    <span class=\"token comment\">// 获取到的body存放在ptr中，先将其转换为string格式</span>\n<span class=\"line-number\">15</span>    idcard_result <span class=\"token operator\">=</span> std<span class=\"token operator\">::</span><span class=\"token function\">string</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span> ptr<span class=\"token punctuation\">,</span> size <span class=\"token operator\">*</span> nmemb<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">16</span>    <span class=\"token keyword\">return</span> size <span class=\"token operator\">*</span> nmemb<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">17</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">18</span><span class=\"token comment\">/**\n<span class=\"line-number\">19</span> * 身份证识别\n<span class=\"line-number\">20</span> * @return 调用成功返回0，发生错误返回其他错误码\n<span class=\"line-number\">21</span> */</span>\n<span class=\"line-number\">22</span><span class=\"token keyword\">int</span> <span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span>std<span class=\"token operator\">::</span>string <span class=\"token operator\">&amp;</span>json_result<span class=\"token punctuation\">,</span> <span class=\"token keyword\">const</span> std<span class=\"token operator\">::</span>string <span class=\"token operator\">&amp;</span>access_token<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">23</span>    std<span class=\"token operator\">::</span>string url <span class=\"token operator\">=</span> request_url <span class=\"token operator\">+</span> <span class=\"token string\">\"?access_token=\"</span> <span class=\"token operator\">+</span> access_token<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">24</span>    CURL <span class=\"token operator\">*</span>curl <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">25</span>    CURLcode result_code<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">26</span>    <span class=\"token keyword\">int</span> is_success<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">27</span>    curl <span class=\"token operator\">=</span> <span class=\"token function\">curl_easy_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">28</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">29</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_URL<span class=\"token punctuation\">,</span> url<span class=\"token punctuation\">.</span><span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">30</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_POST<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">31</span>        curl_httppost <span class=\"token operator\">*</span>post <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">32</span>        curl_httppost <span class=\"token operator\">*</span>last <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">33</span>        <span class=\"token function\">curl_formadd</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>post<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>last<span class=\"token punctuation\">,</span> CURLFORM_COPYNAME<span class=\"token punctuation\">,</span> <span class=\"token string\">\"id_card_side\"</span><span class=\"token punctuation\">,</span> CURLFORM_COPYCONTENTS<span class=\"token punctuation\">,</span> <span class=\"token string\">\"front\"</span><span class=\"token punctuation\">,</span> CURLFORM_END<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">34</span>        <span class=\"token function\">curl_formadd</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>post<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>last<span class=\"token punctuation\">,</span> CURLFORM_COPYNAME<span class=\"token punctuation\">,</span> <span class=\"token string\">\"image\"</span><span class=\"token punctuation\">,</span> CURLFORM_COPYCONTENTS<span class=\"token punctuation\">,</span> <span class=\"token string\">\"【base64_img】\"</span><span class=\"token punctuation\">,</span> CURLFORM_END<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">35</span>\n<span class=\"line-number\">36</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_HTTPPOST<span class=\"token punctuation\">,</span> post<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">37</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_WRITEFUNCTION<span class=\"token punctuation\">,</span> callback<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">38</span>        result_code <span class=\"token operator\">=</span> <span class=\"token function\">curl_easy_perform</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">39</span>        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>result_code <span class=\"token operator\">!=</span> CURLE_OK<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">40</span>            <span class=\"token function\">fprintf</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stderr</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"curl_easy_perform() failed: %s\\n\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">41</span>                    <span class=\"token function\">curl_easy_strerror</span><span class=\"token punctuation\">(</span>result_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">42</span>            is_success <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">43</span>            <span class=\"token keyword\">return</span> is_success<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">44</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">45</span>        json_result <span class=\"token operator\">=</span> idcard_result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">46</span>        <span class=\"token function\">curl_easy_cleanup</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">47</span>        is_success <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">48</span>    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">49</span>        <span class=\"token function\">fprintf</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stderr</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"curl_easy_init() failed.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">50</span>        is_success <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">51</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">52</span>    <span class=\"token keyword\">return</span> is_success<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">53</span><span class=\"token punctuation\">}</span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-0-radio-4\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-0\"\n            \n            data-index=\"4\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-php\"><code><span class=\"line-number\">1</span><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"line-number\">2</span><span class=\"token comment\">/**\n<span class=\"line-number\">3</span> * 发起http post请求(REST API), 并获取REST请求的结果\n<span class=\"line-number\">4</span> * @param string $url\n<span class=\"line-number\">5</span> * @param string $param\n<span class=\"line-number\">6</span> * @return - http response body if succeeds, else false.\n<span class=\"line-number\">7</span> */</span>\n<span class=\"line-number\">8</span><span class=\"token keyword\">function</span> <span class=\"token function\">request_post</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">''</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$param</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">''</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">9</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">10</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">empty</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token keyword\">empty</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$param</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">11</span>        <span class=\"token keyword\">return</span> <span class=\"token boolean constant\">false</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">12</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">13</span>\n<span class=\"line-number\">14</span>    <span class=\"token variable\">$postUrl</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$url</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">15</span>    <span class=\"token variable\">$curlPost</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$param</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">16</span>    <span class=\"token comment\">// 初始化curl</span>\n<span class=\"line-number\">17</span>    <span class=\"token variable\">$curl</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">18</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_URL</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$postUrl</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">19</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_HEADER</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">20</span>    <span class=\"token comment\">// 要求结果为字符串且输出到屏幕上</span>\n<span class=\"line-number\">21</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">22</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_SSL_VERIFYPEER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">23</span>    <span class=\"token comment\">// post提交方式</span>\n<span class=\"line-number\">24</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_POST</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">25</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_POSTFIELDS</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$curlPost</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">26</span>    <span class=\"token comment\">// 运行curl</span>\n<span class=\"line-number\">27</span>    <span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">28</span>    <span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$curl</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">29</span>\n<span class=\"line-number\">30</span>    <span class=\"token keyword\">return</span> <span class=\"token variable\">$data</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">31</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">32</span>\n<span class=\"line-number\">33</span><span class=\"token variable\">$token</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">'[调用鉴权接口获取的token]'</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">34</span><span class=\"token variable\">$url</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token='</span> <span class=\"token punctuation\">.</span> <span class=\"token variable\">$token</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">35</span><span class=\"token variable\">$img</span> <span class=\"token operator\">=</span> <span class=\"token function\">file_get_contents</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'[本地文件路径]'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">36</span><span class=\"token variable\">$img</span> <span class=\"token operator\">=</span> <span class=\"token function\">base64_encode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$img</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">37</span><span class=\"token variable\">$bodys</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n<span class=\"line-number\">38</span>    <span class=\"token single-quoted-string string\">'id_card_side'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"front\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">39</span>    <span class=\"token single-quoted-string string\">'image'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$img</span>\n<span class=\"line-number\">40</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">41</span><span class=\"token variable\">$res</span> <span class=\"token operator\">=</span> <span class=\"token function\">request_post</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$bodys</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">42</span>\n<span class=\"line-number\">43</span><span class=\"token function\">var_dump</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$res</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-0-radio-5\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-0\"\n            \n            data-index=\"5\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-csharp\"><code><span class=\"line-number\">1</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">2</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>IO<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Net<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">4</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Text<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">5</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Web<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">6</span>\n<span class=\"line-number\">7</span><span class=\"token keyword\">namespace</span> com<span class=\"token punctuation\">.</span>baidu<span class=\"token punctuation\">.</span>ai\n<span class=\"line-number\">8</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">9</span>    <span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Idcard</span>\n<span class=\"line-number\">10</span>    <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">11</span>        <span class=\"token comment\">// 身份证识别</span>\n<span class=\"line-number\">12</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">13</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">14</span>            <span class=\"token keyword\">string</span> token <span class=\"token operator\">=</span> <span class=\"token string\">\"[调用鉴权接口获取的token]\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">15</span>            <span class=\"token keyword\">string</span> host <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=\"</span> <span class=\"token operator\">+</span> token<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">16</span>            <span class=\"token class-name\">Encoding</span> encoding <span class=\"token operator\">=</span> Encoding<span class=\"token punctuation\">.</span>Default<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">17</span>            <span class=\"token class-name\">HttpWebRequest</span> request <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>HttpWebRequest<span class=\"token punctuation\">)</span>WebRequest<span class=\"token punctuation\">.</span><span class=\"token function\">Create</span><span class=\"token punctuation\">(</span>host<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">18</span>            request<span class=\"token punctuation\">.</span>Method <span class=\"token operator\">=</span> <span class=\"token string\">\"post\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">19</span>            request<span class=\"token punctuation\">.</span>KeepAlive <span class=\"token operator\">=</span> <span class=\"token keyword\">true</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">20</span>            <span class=\"token comment\">// 图片的base64编码</span>\n<span class=\"line-number\">21</span>            <span class=\"token keyword\">string</span> base64 <span class=\"token operator\">=</span> <span class=\"token function\">getFileBase64</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"[本地图片文件]\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">22</span>            <span class=\"token class-name\">String</span> str <span class=\"token operator\">=</span> <span class=\"token string\">\"id_card_side=\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"front\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;image=\"</span> <span class=\"token operator\">+</span> HttpUtility<span class=\"token punctuation\">.</span><span class=\"token function\">UrlEncode</span><span class=\"token punctuation\">(</span>base64<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">23</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> buffer <span class=\"token operator\">=</span> encoding<span class=\"token punctuation\">.</span><span class=\"token function\">GetBytes</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">24</span>            request<span class=\"token punctuation\">.</span>ContentLength <span class=\"token operator\">=</span> buffer<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">25</span>            request<span class=\"token punctuation\">.</span><span class=\"token function\">GetRequestStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">Write</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">26</span>            <span class=\"token class-name\">HttpWebResponse</span> response <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>HttpWebResponse<span class=\"token punctuation\">)</span>request<span class=\"token punctuation\">.</span><span class=\"token function\">GetResponse</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">27</span>            <span class=\"token class-name\">StreamReader</span> reader <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">StreamReader</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span><span class=\"token function\">GetResponseStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> Encoding<span class=\"token punctuation\">.</span>Default<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">28</span>            <span class=\"token keyword\">string</span> result <span class=\"token operator\">=</span> reader<span class=\"token punctuation\">.</span><span class=\"token function\">ReadToEnd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">29</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"身份证识别:\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">30</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">31</span>            <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">32</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">33</span>\n<span class=\"line-number\">34</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">getFileBase64</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> fileName<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">35</span>            <span class=\"token class-name\">FileStream</span> filestream <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">FileStream</span><span class=\"token punctuation\">(</span>fileName<span class=\"token punctuation\">,</span> FileMode<span class=\"token punctuation\">.</span>Open<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">36</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arr <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span>filestream<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">37</span>            filestream<span class=\"token punctuation\">.</span><span class=\"token function\">Read</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span>filestream<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">38</span>            <span class=\"token keyword\">string</span> baser64 <span class=\"token operator\">=</span> Convert<span class=\"token punctuation\">.</span><span class=\"token function\">ToBase64String</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">39</span>            filestream<span class=\"token punctuation\">.</span><span class=\"token function\">Close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">40</span>            <span class=\"token keyword\">return</span> baser64<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">41</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">42</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">43</span><span class=\"token punctuation\">}</span></code></pre>\n        </div>\n        \n            </div>\n        </div>\n    </div>\n  \n<h2 id=\"返回说明\"><a href=\"#%E8%BF%94%E5%9B%9E%E8%AF%B4%E6%98%8E\" aria-label=\"返回说明 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>返回说明</h2>\n<p><strong>返回参数</strong></p>\n<table>\n<thead>\n<tr>\n<th>字段</th>\n<th>是否必选</th>\n<th>类型</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>log_id</td>\n<td>是</td>\n<td>uint64</td>\n<td>唯一的log id，用于问题定位</td>\n</tr>\n<tr>\n<td>words_result</td>\n<td>是</td>\n<td>object</td>\n<td>定位和识别结果</td>\n</tr>\n<tr>\n<td>words_result_num</td>\n<td>是</td>\n<td>uint32</td>\n<td>识别结果数，表示words_result的元素个数</td>\n</tr>\n<tr>\n<td>direction</td>\n<td>否</td>\n<td>int32</td>\n<td>图像方向，输入参数 detect_direction= true 时返回。<br/>- - 1：未定义，<br/>- 0：正向，<br/>- 1：逆时针90度，<br/>- 2：逆时针180度，<br/>- 3：逆时针270度</td>\n</tr>\n<tr>\n<td>image_status</td>\n<td>是</td>\n<td>string</td>\n<td>normal-识别正常<br/>reversed_side-身份证正反面颠倒<br/>non_idcard-上传的图片中不包含身份证<br/>blurred-身份证模糊<br/>other_type_card-其他类型证照<br/>over_exposure-身份证关键字段反光或过曝<br/>over_dark-身份证欠曝（亮度过低）<br/>unknown-未知状态</td>\n</tr>\n<tr>\n<td>card_ps</td>\n<td>否</td>\n<td>string</td>\n<td>输入参数 detect_ps = true 时，则返回该字段，判断身份证是否被PS，返回值： <br/>- 0：正常， <br/>- 1：PS， <br/>- -1：无效</td>\n</tr>\n<tr>\n<td>risk_type</td>\n<td>否</td>\n<td>string</td>\n<td>输入参数 detect_risk = true 时，则返回该字段识别身份证<strong>风险类型</strong>: <br/>normal-正常身份证；<br/>copy-复印件；<br/>scan-扫描件；<br/>temporary-临时身份证；<br/>screen-翻拍；<br/>screenshot-截屏（仅在开启 detect_screenshot 时返回）；<br/>unknown-其他未知情况</td>\n</tr>\n<tr>\n<td>edit_tool</td>\n<td>否</td>\n<td>string</td>\n<td>如果参数 detect_risk = true 时，则返回此字段。如果检测身份证被编辑过，该字段指定编辑软件名称，如:Adobe Photoshop CC 2014 (Macintosh),如果没有被编辑过则返回值无此参数</td>\n</tr>\n<tr>\n<td>card_quality</td>\n<td>否</td>\n<td>object</td>\n<td>输入参数 detect_quality = true 时，则返回该字段识别身份证质量类型</td>\n</tr>\n<tr>\n<td>+ IsClear</td>\n<td>否</td>\n<td>float</td>\n<td>质量类型，是否清晰，返回值包括：  <br>- 1：清晰  <br>- 0：不清晰</td>\n</tr>\n<tr>\n<td>+ IsClear_propobility</td>\n<td>否</td>\n<td>float</td>\n<td>“是否清晰”质量类型对应的概率，值在0-1之间，值越大表示图像质量越好。<strong>默认阈值</strong>（仅为推荐值，建议按照实际业务场景，基于图片返回的具体概率值，自定义设置判断阈值）：当 IsClear_propobility 超过0.5时，对应 IsClear 返回1，低于0.5，则返回0</td>\n</tr>\n<tr>\n<td>+ IsComplete</td>\n<td>否</td>\n<td>float</td>\n<td>质量类型，是否边框/四角完整，返回值包括：  <br>- 1：边框/四角完整  <br>- 0：边框/四角不完整</td>\n</tr>\n<tr>\n<td>+ IsComplete_propobility</td>\n<td>否</td>\n<td>float</td>\n<td>“是否边框/四角完整”质量类型对应的概率，值在0-1之间，值越大表示图像质量越好。<strong>默认阈值</strong>（仅为推荐值，建议按照实际业务场景，基于图片返回的具体概率值，自定义设置判断阈值）：当 IsComplete_propobility 超过0.5时，对应 IsComplete 返回1，低于0.5，则返回0</td>\n</tr>\n<tr>\n<td>+ IsNoCover</td>\n<td>否</td>\n<td>float</td>\n<td>质量类型，是否头像、关键字段无遮挡/马赛克，返回值包括：  <br>- 1：头像、关键字段无遮挡/马赛克<br>- 0：头像、关键字段有遮挡/马赛克</td>\n</tr>\n<tr>\n<td>+ IsNoCover_propobility</td>\n<td>否</td>\n<td>float</td>\n<td>“是否头像、关键字段无遮挡/马赛克”质量类型对应的概率，值在0-1之间，值越大表示图像质量越好。<strong>默认阈值</strong>（仅为推荐值，建议按照实际业务场景，基于图片返回的具体概率值，自定义设置判断阈值）：当 IsNoCover_propobility 超过0.3时，对应IsNoCover 返回1，低于0.3，则返回0</td>\n</tr>\n<tr>\n<td>photo</td>\n<td>否</td>\n<td>string</td>\n<td>当请求参数 detect_photo = true时返回，头像切图的 base64 编码（无编码头，需自行处理）</td>\n</tr>\n<tr>\n<td>photo_location</td>\n<td>否</td>\n<td>object</td>\n<td>当请求参数 detect_photo = true时返回，头像的位置信息（坐标0点为左上角）</td>\n</tr>\n<tr>\n<td>card_image</td>\n<td>否</td>\n<td>string</td>\n<td>当请求参数 detect_card = true时返回，身份证裁剪切图的 base64 编码（无编码头，需自行处理）</td>\n</tr>\n<tr>\n<td>card_location</td>\n<td>否</td>\n<td>object</td>\n<td>当请求参数 detect_card = true时返回，身份证裁剪切图的位置信息（坐标0点为左上角）</td>\n</tr>\n<tr>\n<td>idcard_number_type</td>\n<td>是</td>\n<td>int</td>\n<td>用于校验身份证号码、性别、出生是否一致，输出结果及其对应关系如下：<br/><strong>- 1：</strong> 身份证正面所有字段全为空<br/><strong>0：</strong> 身份证证号不合法，此情况下不返回身份证证号<br/><strong>1：</strong> 身份证证号和性别、出生信息一致<br/><strong>2：</strong> 身份证证号和性别、出生信息都不一致<br/><strong>3：</strong> 身份证证号和出生信息不一致<br/><strong>4：</strong> 身份证证号和性别信息不一致</td>\n</tr>\n<tr>\n<td>+ location</td>\n<td>是</td>\n<td>array[]</td>\n<td>位置数组（坐标0点为左上角）</td>\n</tr>\n<tr>\n<td>++ left</td>\n<td>是</td>\n<td>uint32</td>\n<td>表示定位位置的长方形左上顶点的水平坐标</td>\n</tr>\n<tr>\n<td>++ top</td>\n<td>是</td>\n<td>uint32</td>\n<td>表示定位位置的长方形左上顶点的垂直坐标</td>\n</tr>\n<tr>\n<td>++ width</td>\n<td>是</td>\n<td>uint32</td>\n<td>表示定位位置的长方形的宽度</td>\n</tr>\n<tr>\n<td>++ height</td>\n<td>是</td>\n<td>uint32</td>\n<td>表示定位位置的长方形的高度</td>\n</tr>\n<tr>\n<td>+ words</td>\n<td>否</td>\n<td>string</td>\n<td>识别结果字符串</td>\n</tr>\n</tbody>\n</table>\n<p><strong>返回示例（身份证头像面）</strong></p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">JSON</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-json\"><code><span class=\"line-number\">1</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">2</span>    <span class=\"token property\">\"log_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1559208562721579319\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">3</span>    <span class=\"token property\">\"direction\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">4</span>    <span class=\"token property\">\"image_status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"normal\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">5</span>    <span class=\"token property\">\"photo\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/9j/4AAQSkZJRgABA......\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">6</span>    <span class=\"token property\">\"photo_location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">7</span>        <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1189</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">8</span>        <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">638</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">9</span>        <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2248</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">10</span>        <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1483</span>\n<span class=\"line-number\">11</span>    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">12</span>    <span class=\"token property\">\"card_image\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/9j/4AAQSkZJRgABA......\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">13</span>    <span class=\"token property\">\"card_location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">14</span>        <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">328</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">15</span>        <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">275</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">16</span>        <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1329</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">17</span>        <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">571</span>\n<span class=\"line-number\">18</span>    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">19</span>    <span class=\"token property\">\"words_result\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">20</span>        <span class=\"token property\">\"住址\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">21</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">22</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">267</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">23</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">453</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">24</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">459</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">25</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">99</span>\n<span class=\"line-number\">26</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">27</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"南京市江宁区弘景大道3889号\"</span>\n<span class=\"line-number\">28</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">29</span>        <span class=\"token property\">\"公民身份号码\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">30</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">31</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">443</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">32</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">681</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">33</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">589</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">34</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">45</span>\n<span class=\"line-number\">35</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">36</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"330881199904173914\"</span>\n<span class=\"line-number\">37</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">38</span>        <span class=\"token property\">\"出生\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">39</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">40</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">270</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">41</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">355</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">42</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">357</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">43</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">45</span>\n<span class=\"line-number\">44</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">45</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"19990417\"</span>\n<span class=\"line-number\">46</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">47</span>        <span class=\"token property\">\"姓名\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">48</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">49</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">267</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">50</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">176</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">51</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">152</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">52</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">50</span>\n<span class=\"line-number\">53</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">54</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"伍云龙\"</span>\n<span class=\"line-number\">55</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">56</span>        <span class=\"token property\">\"性别\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">57</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">58</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">269</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">59</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">262</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">60</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">33</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">61</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">52</span>\n<span class=\"line-number\">62</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">63</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"男\"</span>\n<span class=\"line-number\">64</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">65</span>        <span class=\"token property\">\"民族\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">66</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">67</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">492</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">68</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">279</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">69</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">30</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">70</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">37</span>\n<span class=\"line-number\">71</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">72</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"汉\"</span>\n<span class=\"line-number\">73</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">74</span>    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">75</span>    <span class=\"token property\">\"words_result_num\"</span><span class=\"token operator\">:</span> <span class=\"token number\">6</span>\n<span class=\"line-number\">76</span><span class=\"token punctuation\">}</span></code></pre>\n            </div>\n        </div>\n    </div>\n  \n<p><strong>返回示例（身份证国徽面）</strong></p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">JSON</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-json\"><code><span class=\"line-number\">1</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">2</span>    <span class=\"token property\">\"words_result\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">3</span>        <span class=\"token property\">\"失效日期\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">4</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"20390711\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">5</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">6</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">445</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">7</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">523</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">8</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">153</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">9</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">38</span>\n<span class=\"line-number\">10</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">11</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">12</span>        <span class=\"token property\">\"签发机关\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">13</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"陆丰市公安局\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">14</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">15</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">377</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">16</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">339</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">17</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">195</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">18</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">38</span>\n<span class=\"line-number\">19</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">20</span>        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">21</span>        <span class=\"token property\">\"签发日期\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">22</span>            <span class=\"token property\">\"words\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"20190606\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">23</span>            <span class=\"token property\">\"location\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">24</span>                <span class=\"token property\">\"top\"</span><span class=\"token operator\">:</span> <span class=\"token number\">445</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">25</span>                <span class=\"token property\">\"left\"</span><span class=\"token operator\">:</span> <span class=\"token number\">343</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">26</span>                <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">152</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">27</span>                <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">38</span>\n<span class=\"line-number\">28</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">29</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">30</span>    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">31</span>    <span class=\"token property\">\"log_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1559208562721579328\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">32</span>    <span class=\"token property\">\"words_result_num\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">33</span>    <span class=\"token property\">\"error_code\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">34</span>    <span class=\"token property\">\"image_status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"normal\"</span>\n<span class=\"line-number\">35</span><span class=\"token punctuation\">}</span></code></pre>\n            </div>\n        </div>\n    </div>\n  \n<h2 id=\"aes加密\"><a href=\"#aes%E5%8A%A0%E5%AF%86\" aria-label=\"aes加密 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>AES加密</h2>\n<p>您可以选择使用AES加密来请求本身份证识别接口，支持对身份证图片及识别结果进行加密后传输，示意图如下：</p>\n<p><img src=\"https://bce.bdstatic.com/doc/ai-cloud-share/OCR/image_b1a3a81.png\" alt=\"image.png\">\n</br></p>\n<ol>\n<li>在百度云控制台「文字识别-应用列表-管理」中获取您的AES Key</li>\n<li>使用AES Key对将要识别的图片进行加密</li>\n<li>将加密后的图片传入接口，请求参数AESEncry设置为true</li>\n<li>接口返回加密后的识别结果，使用AES Key进行解密，得到明文识别结果\n</br></li>\n</ol>\n<p>使用AES加密不影响身份证识别接口支持的质量检测、风险检测等其他能力，也不影响识别效果。</p>\n<h3 id=\"请求说明-1\"><a href=\"#%E8%AF%B7%E6%B1%82%E8%AF%B4%E6%98%8E-1\" aria-label=\"请求说明 1 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>请求说明</h3>\n<p><strong>请求示例</strong></p>\n<p>HTTP 方法：<code>POST</code></p>\n<p>请求URL： <code>https://aip.baidubce.com/rest/2.0/ocr/v1/idcard</code></p>\n<p>URL参数：</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>access_token</td>\n<td>通过API Key和Secret Key获取的access_token,参考“<a href=\"https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Access Token获取</a>”</td>\n</tr>\n</tbody>\n</table>\n<p>Header如下：</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Content-Type</td>\n<td>application/x-www-form-urlencoded</td>\n</tr>\n</tbody>\n</table>\n<p>Body中放置请求参数，参数详情如下：</p>\n<p><strong>请求参数</strong></p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>是否必选</th>\n<th>类型</th>\n<th>可选值范围</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>image</td>\n<td>是</td>\n<td>string</td>\n<td>-</td>\n<td>AES加密后的图像数据，请对加密图片进行base64编码后进行urlencode，要求base64编码后大小不超过4M，最短边至少15px，最长边最大4096px,支持jpg/jpeg/png/bmp格式</td>\n</tr>\n<tr>\n<td>AESEncry</td>\n<td>是</td>\n<td>string</td>\n<td>true/false</td>\n<td>使用AES加密请传true</td>\n</tr>\n<tr>\n<td>id_card_side</td>\n<td>是</td>\n<td>string</td>\n<td>front/back</td>\n<td>-front：身份证含照片的一面</br>-back：身份证带国徽的一面</br>自动检测身份证正反面，如果传参指定方向与图片相反，支持正常识别，返回参数image_status字段为\"reversed_side\"</td>\n</tr>\n<tr>\n<td>detect_direction</td>\n<td>否</td>\n<td>string</td>\n<td>-</td>\n<td>此参数新版本无需传，支持自动检测图像旋转角度</td>\n</tr>\n<tr>\n<td>detect_risk</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否开启身份证风险类型(身份证复印件/扫描件、临时身份证、身份证翻拍/截屏、修改过的身份证)功能，默认不开启，即：false。</br>- true：开启，请查看返回参数risk_type；</br>- false：不开启</td>\n</tr>\n<tr>\n<td>detect_photo</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否检测头像内容，默认不检测，即：false。</br>- true：检测头像并返回头像的 base64 编码及位置信息；</br> - false：不检测</td>\n</tr>\n<tr>\n<td>detect_screenshot</td>\n<td>否</td>\n<td>string</td>\n<td>true/false</td>\n<td>是否细分输出截屏风险类型，当 detect_risk =ture 时，该参数才生效。默认不开启，即：false。</br>- true：开启，risk_type 将细分输出 screenshot 截屏类型； </br>- false：不开启，risk_type 将合并 screenshot 截屏到 screen 翻拍类型输出</td>\n</tr>\n</tbody>\n</table>\n<p><strong>请求代码示例</strong></p>\n<p><strong>提示一</strong>：使用示例代码前，请记得替换其中的示例Token、图片地址或Base64信息。</p>\n<p><strong>提示二</strong>：部分语言依赖的类或库，请在代码注释中查看下载地址。</p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <div class=\"code-block-inner-tabs doc-tab-group\">\n                \n        <label\n            for=\"code-block-group-1-radio-0\"\n            class=\"doc-tab-item doc-tab-item-selected\"\n            data-index=\"0\"\n        >\n            <span class=\"doc-tab-item-label\">Python</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-1-radio-1\"\n            class=\"doc-tab-item \"\n            data-index=\"1\"\n        >\n            <span class=\"doc-tab-item-label\">JAVA</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-1-radio-2\"\n            class=\"doc-tab-item \"\n            data-index=\"2\"\n        >\n            <span class=\"doc-tab-item-label\">C++</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-1-radio-3\"\n            class=\"doc-tab-item \"\n            data-index=\"3\"\n        >\n            <span class=\"doc-tab-item-label\">PHP</span>\n        </label>\n        \n        <label\n            for=\"code-block-group-1-radio-4\"\n            class=\"doc-tab-item \"\n            data-index=\"4\"\n        >\n            <span class=\"doc-tab-item-label\">C#</span>\n        </label>\n        \n                <div class=\"code-block-inner-tab-thumb doc-tab-thumb\"></div>\n                </div>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-inner-tab-content doc-tab-content-wrapper\">\n                \n        <input\n            id=\"code-block-group-1-radio-0\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-1\"\n            checked=\"\"\n            data-index=\"0\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-python\"><code><span class=\"line-number\">1</span><span class=\"token comment\"># -*- coding: utf-8 -*-</span>\n<span class=\"line-number\">2</span><span class=\"token comment\">#</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">from</span> urllib <span class=\"token keyword\">import</span> urlencode\n<span class=\"line-number\">4</span><span class=\"token keyword\">import</span> base64\n<span class=\"line-number\">5</span><span class=\"token keyword\">from</span> urllib <span class=\"token keyword\">import</span> unquote\n<span class=\"line-number\">6</span><span class=\"token keyword\">import</span> requests\n<span class=\"line-number\">7</span><span class=\"token keyword\">import</span> json\n<span class=\"line-number\">8</span><span class=\"token keyword\">from</span> Crypto<span class=\"token punctuation\">.</span>Cipher <span class=\"token keyword\">import</span> AES\n<span class=\"line-number\">9</span><span class=\"token keyword\">import</span> binascii\n<span class=\"line-number\">10</span>\n<span class=\"line-number\">11</span>ak <span class=\"token operator\">=</span> <span class=\"token string\">\"ak\"</span>\n<span class=\"line-number\">12</span><span class=\"token comment\"># 文字识别应用的API Key</span>\n<span class=\"line-number\">13</span>sk <span class=\"token operator\">=</span> <span class=\"token string\">\"sk\"</span>\n<span class=\"line-number\">14</span><span class=\"token comment\"># 文字识别应用的Secret Key</span>\n<span class=\"line-number\">15</span>\n<span class=\"line-number\">16</span>aes <span class=\"token operator\">=</span> <span class=\"token string\">'res'</span>\n<span class=\"line-number\">17</span><span class=\"token comment\"># aes key 从控制台 文字识别-应用列表-应用管理 获取</span>\n<span class=\"line-number\">18</span>\n<span class=\"line-number\">19</span><span class=\"token keyword\">class</span> <span class=\"token class-name\">AESCipher</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">20</span>    <span class=\"token keyword\">def</span> <span class=\"token function\">__init__</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">21</span>        self<span class=\"token punctuation\">.</span>key <span class=\"token operator\">=</span> self<span class=\"token punctuation\">.</span>get_key<span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">22</span>\n<span class=\"line-number\">23</span>    <span class=\"token keyword\">def</span> <span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">24</span>        st <span class=\"token operator\">=</span> <span class=\"token builtin\">bytearray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">25</span>        <span class=\"token keyword\">for</span> s <span class=\"token keyword\">in</span> key<span class=\"token punctuation\">:</span>\n<span class=\"line-number\">26</span>            st<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">27</span>        <span class=\"token builtin\">str</span> <span class=\"token operator\">=</span> st<span class=\"token punctuation\">.</span>decode<span class=\"token punctuation\">(</span><span class=\"token string\">'utf-8'</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">28</span>        <span class=\"token keyword\">return</span> <span class=\"token builtin\">str</span>\n<span class=\"line-number\">29</span>\n<span class=\"line-number\">30</span>    <span class=\"token keyword\">def</span> <span class=\"token function\">pad</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> text<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">31</span>        <span class=\"token comment\"># 填充方法，加密内容必须为16字节的倍数</span>\n<span class=\"line-number\">32</span>        text_length <span class=\"token operator\">=</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>text<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">33</span>        amount_to_pad <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>block_size <span class=\"token operator\">-</span> <span class=\"token punctuation\">(</span>text_length <span class=\"token operator\">%</span> AES<span class=\"token punctuation\">.</span>block_size<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">34</span>        <span class=\"token keyword\">if</span> amount_to_pad <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">35</span>            amount_to_pad <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>block_size\n<span class=\"line-number\">36</span>        pad <span class=\"token operator\">=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>amount_to_pad<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">37</span>        <span class=\"token keyword\">return</span> text <span class=\"token operator\">+</span> pad <span class=\"token operator\">*</span> amount_to_pad\n<span class=\"line-number\">38</span>\n<span class=\"line-number\">39</span>    <span class=\"token keyword\">def</span> <span class=\"token function\">__unpad</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> text<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">40</span>        <span class=\"token comment\"># 截取填充的字符</span>\n<span class=\"line-number\">41</span>        pad <span class=\"token operator\">=</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>text<span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">42</span>        <span class=\"token keyword\">return</span> text<span class=\"token punctuation\">[</span><span class=\"token punctuation\">:</span><span class=\"token operator\">-</span>pad<span class=\"token punctuation\">]</span>\n<span class=\"line-number\">43</span>\n<span class=\"line-number\">44</span>        <span class=\"token comment\"># 加密函数</span>\n<span class=\"line-number\">45</span>\n<span class=\"line-number\">46</span>    <span class=\"token keyword\">def</span> <span class=\"token function\">encrypt</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> raw<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">47</span>        raw <span class=\"token operator\">=</span> self<span class=\"token punctuation\">.</span>pad<span class=\"token punctuation\">(</span>raw<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">48</span>        cipher <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>new<span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>key<span class=\"token punctuation\">,</span> AES<span class=\"token punctuation\">.</span>MODE_ECB<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">49</span>        <span class=\"token keyword\">return</span> base64<span class=\"token punctuation\">.</span>b64encode<span class=\"token punctuation\">(</span>cipher<span class=\"token punctuation\">.</span>encrypt<span class=\"token punctuation\">(</span>raw<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">50</span>\n<span class=\"line-number\">51</span>    <span class=\"token keyword\">def</span> <span class=\"token function\">decrypt</span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">,</span> enc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">52</span>        <span class=\"token triple-quoted-string string\">\"\"\"\n<span class=\"line-number\">53</span>        解密方法\n<span class=\"line-number\">54</span>        :param enc: base64编码的密文 str\n<span class=\"line-number\">55</span>        :return: 解密后的明文 str\n<span class=\"line-number\">56</span>        \"\"\"</span>\n<span class=\"line-number\">57</span>        cipher <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>new<span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">.</span>key<span class=\"token punctuation\">,</span> AES<span class=\"token punctuation\">.</span>MODE_ECB<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">58</span>        <span class=\"token keyword\">return</span> self<span class=\"token punctuation\">.</span>__unpad<span class=\"token punctuation\">(</span>cipher<span class=\"token punctuation\">.</span>decrypt<span class=\"token punctuation\">(</span>enc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">59</span>\n<span class=\"line-number\">60</span>\n<span class=\"line-number\">61</span><span class=\"token keyword\">def</span> <span class=\"token function\">get_accessToken</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">62</span>    url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&amp;client_id={ak}&amp;client_secret={sk}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>\n<span class=\"line-number\">63</span>        ak<span class=\"token operator\">=</span>ak<span class=\"token punctuation\">,</span> sk<span class=\"token operator\">=</span>sk<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">64</span>    response <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">65</span>    <span class=\"token keyword\">return</span> response<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token string\">'access_token'</span><span class=\"token punctuation\">]</span>\n<span class=\"line-number\">66</span>\n<span class=\"line-number\">67</span>\n<span class=\"line-number\">68</span>encryptor <span class=\"token operator\">=</span> AESCipher<span class=\"token punctuation\">(</span>aes<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">69</span>\n<span class=\"line-number\">70</span>token <span class=\"token operator\">=</span> get_accessToken<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">71</span><span class=\"token comment\"># 改成接口文档里的url</span>\n<span class=\"line-number\">72</span>nameurl <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard\"</span>\n<span class=\"line-number\">73</span>url <span class=\"token operator\">=</span> nameurl <span class=\"token operator\">+</span> <span class=\"token string\">\"?access_token={token}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>token<span class=\"token operator\">=</span>token<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">74</span><span class=\"token keyword\">print</span> url\n<span class=\"line-number\">75</span>\n<span class=\"line-number\">76</span>f <span class=\"token operator\">=</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">'resources/my.jpg'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'rb'</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">77</span>d <span class=\"token operator\">=</span> f<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">78</span>r_data <span class=\"token operator\">=</span> encryptor<span class=\"token punctuation\">.</span>encrypt<span class=\"token punctuation\">(</span>d<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">79</span><span class=\"token comment\"># 构造请求数据格式</span>\n<span class=\"line-number\">80</span>data <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">81</span>data<span class=\"token punctuation\">[</span><span class=\"token string\">'image'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> r_data\n<span class=\"line-number\">82</span>data<span class=\"token punctuation\">[</span><span class=\"token string\">'id_card_side'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string\">'front'</span>\n<span class=\"line-number\">83</span>data<span class=\"token punctuation\">[</span><span class=\"token string\">'AESEncry'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string\">'true'</span>\n<span class=\"line-number\">84</span>headers <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token string\">'content-type'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'application/x-www-form-urlencoded'</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">85</span>\n<span class=\"line-number\">86</span>res <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>post<span class=\"token punctuation\">(</span>url<span class=\"token operator\">=</span>url<span class=\"token punctuation\">,</span> data<span class=\"token operator\">=</span>data<span class=\"token punctuation\">,</span> headers<span class=\"token operator\">=</span>headers<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">87</span><span class=\"token comment\">#res= json.dumps(res.content, ensure_ascii=False)</span>\n<span class=\"line-number\">88</span>data<span class=\"token operator\">=</span>json<span class=\"token punctuation\">.</span>loads<span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">.</span>content<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">89</span>result<span class=\"token operator\">=</span>encryptor<span class=\"token punctuation\">.</span>decrypt<span class=\"token punctuation\">(</span>base64<span class=\"token punctuation\">.</span>b64decode<span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">[</span><span class=\"token string\">'result'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">90</span><span class=\"token keyword\">print</span> result</code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-1-radio-1\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-1\"\n            \n            data-index=\"1\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-java\"><code><span class=\"line-number\">1</span><span class=\"token keyword\">package</span> AES<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">2</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>alibaba<span class=\"token punctuation\">.</span>fastjson</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">JSONObject</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">4</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">javax<span class=\"token punctuation\">.</span>crypto</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">Cipher</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">5</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">javax<span class=\"token punctuation\">.</span>crypto<span class=\"token punctuation\">.</span>spec</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">SecretKeySpec</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">6</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">java<span class=\"token punctuation\">.</span>net</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">URLEncoder</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">7</span><span class=\"token keyword\">import</span> <span class=\"token namespace\">java<span class=\"token punctuation\">.</span>util</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">Base64</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">8</span>\n<span class=\"line-number\">9</span><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Idcard</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">10</span>\n<span class=\"line-number\">11</span>    <span class=\"token comment\">/**\n<span class=\"line-number\">12</span>     * 重要提示代码中所需工具类\n<span class=\"line-number\">13</span>     * FileUtil,HttpUtil请从\n<span class=\"line-number\">14</span>     * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72\n<span class=\"line-number\">15</span>     * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3\n<span class=\"line-number\">16</span>     * 下载\n<span class=\"line-number\">17</span>     */</span>\n<span class=\"line-number\">18</span>\n<span class=\"line-number\">19</span>    <span class=\"token comment\">// 请求url</span>\n<span class=\"line-number\">20</span>    <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">21</span>\n<span class=\"line-number\">22</span>    <span class=\"token comment\">// aes key 从console控制台获取</span>\n<span class=\"line-number\">23</span>    <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> aesKey <span class=\"token operator\">=</span> <span class=\"token string\">\"[16位 aeskey]\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">24</span>\n<span class=\"line-number\">25</span>    <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> originAesKey <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">26</span>\n<span class=\"line-number\">27</span>    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">28</span>        <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">29</span>            <span class=\"token comment\">// 本地文件路径</span>\n<span class=\"line-number\">30</span>            <span class=\"token class-name\">String</span> filePath <span class=\"token operator\">=</span> <span class=\"token string\">\"[本地文件路径]\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">31</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> imgData <span class=\"token operator\">=</span> <span class=\"token class-name\">FileUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">readFileByBytes</span><span class=\"token punctuation\">(</span>filePath<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">32</span>\n<span class=\"line-number\">33</span>            <span class=\"token class-name\">String</span> imgStr <span class=\"token operator\">=</span> <span class=\"token function\">encryptImg</span><span class=\"token punctuation\">(</span>aesKey<span class=\"token punctuation\">,</span> imgData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">34</span>\n<span class=\"line-number\">35</span>            <span class=\"token class-name\">String</span> imgParam <span class=\"token operator\">=</span> <span class=\"token class-name\">URLEncoder</span><span class=\"token punctuation\">.</span><span class=\"token function\">encode</span><span class=\"token punctuation\">(</span>imgStr<span class=\"token punctuation\">,</span> <span class=\"token string\">\"UTF-8\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">36</span>\n<span class=\"line-number\">37</span>            <span class=\"token class-name\">String</span> param <span class=\"token operator\">=</span> <span class=\"token string\">\"id_card_side=\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"front\"</span> <span class=\"token operator\">+</span>\n<span class=\"line-number\">38</span>                    <span class=\"token string\">\"&amp;image=\"</span> <span class=\"token operator\">+</span> imgParam <span class=\"token operator\">+</span>\n<span class=\"line-number\">39</span>                    <span class=\"token string\">\"&amp;AESEncry=\"</span> <span class=\"token operator\">+</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">;</span>\n<span class=\"line-number\">40</span>\n<span class=\"line-number\">41</span>            <span class=\"token class-name\">String</span> accessToken <span class=\"token operator\">=</span> <span class=\"token string\">\"[access token]\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">42</span>\n<span class=\"line-number\">43</span>            <span class=\"token class-name\">String</span> encryptResult <span class=\"token operator\">=</span> <span class=\"token class-name\">HttpUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">post</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> accessToken<span class=\"token punctuation\">,</span> param<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">44</span>\n<span class=\"line-number\">45</span>            <span class=\"token class-name\">String</span> decryptResult <span class=\"token operator\">=</span> <span class=\"token function\">parseResult</span><span class=\"token punctuation\">(</span>encryptResult<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">46</span>\n<span class=\"line-number\">47</span>            <span class=\"token keyword\">return</span> decryptResult<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">48</span>        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Exception</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">49</span>            e<span class=\"token punctuation\">.</span><span class=\"token function\">printStackTrace</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">50</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">51</span>        <span class=\"token keyword\">return</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">52</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">53</span>\n<span class=\"line-number\">54</span>    <span class=\"token comment\">/**\n<span class=\"line-number\">55</span>     * 加密图片\n<span class=\"line-number\">56</span>     *\n<span class=\"line-number\">57</span>     * @param aesKey\n<span class=\"line-number\">58</span>     * @param imgData\n<span class=\"line-number\">59</span>     * @return\n<span class=\"line-number\">60</span>     * @throws Exception\n<span class=\"line-number\">61</span>     */</span>\n<span class=\"line-number\">62</span>    <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">encryptImg</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> aesKey<span class=\"token punctuation\">,</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> imgData<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">63</span>        originAesKey <span class=\"token operator\">=</span> <span class=\"token class-name\">AesKeyUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">parseAesKey</span><span class=\"token punctuation\">(</span>aesKey<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">64</span>        <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> encImgBytes <span class=\"token operator\">=</span> <span class=\"token class-name\">AesUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">encrypt</span><span class=\"token punctuation\">(</span>imgData<span class=\"token punctuation\">,</span> originAesKey<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">65</span>        <span class=\"token class-name\">String</span> imgStr <span class=\"token operator\">=</span> <span class=\"token class-name\">Base64Util</span><span class=\"token punctuation\">.</span><span class=\"token function\">encodeBase64</span><span class=\"token punctuation\">(</span>encImgBytes<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">66</span>        <span class=\"token keyword\">return</span> imgStr<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">67</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">68</span>\n<span class=\"line-number\">69</span>    <span class=\"token comment\">/**\n<span class=\"line-number\">70</span>     * 解密结果\n<span class=\"line-number\">71</span>     *\n<span class=\"line-number\">72</span>     * @param encryptResult\n<span class=\"line-number\">73</span>     * @return\n<span class=\"line-number\">74</span>     * @throws Exception\n<span class=\"line-number\">75</span>     */</span>\n<span class=\"line-number\">76</span>    <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">parseResult</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> encryptResult<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">77</span>        <span class=\"token class-name\">JSONObject</span> obj <span class=\"token operator\">=</span> <span class=\"token class-name\">JSONObject</span><span class=\"token punctuation\">.</span><span class=\"token function\">parseObject</span><span class=\"token punctuation\">(</span>encryptResult<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">78</span>        <span class=\"token class-name\">String</span> result <span class=\"token operator\">=</span> obj<span class=\"token punctuation\">.</span><span class=\"token function\">getString</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"result\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">79</span>        <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arr <span class=\"token operator\">=</span> <span class=\"token class-name\">Base64Util</span><span class=\"token punctuation\">.</span><span class=\"token function\">decodeBase64</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">80</span>        <span class=\"token class-name\">String</span> decryptResult <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">AesUtil</span><span class=\"token punctuation\">.</span><span class=\"token function\">decrypt</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">,</span> originAesKey<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">81</span>        <span class=\"token keyword\">return</span> decryptResult<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">82</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">83</span>\n<span class=\"line-number\">84</span>    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">85</span>        <span class=\"token class-name\">Idcard</span><span class=\"token punctuation\">.</span><span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">86</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">87</span>\n<span class=\"line-number\">88</span>\n<span class=\"line-number\">89</span>    <span class=\"token keyword\">static</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">AesKeyUtil</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">90</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token class-name\">String</span> HEX <span class=\"token operator\">=</span> <span class=\"token string\">\"0123456789abcdef\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">91</span>\n<span class=\"line-number\">92</span>        <span class=\"token comment\">/**\n<span class=\"line-number\">93</span>         * 获得原生的128位的aeskey\n<span class=\"line-number\">94</span>         * 因为一个byte位8位最后生成的byte数组长度为16\n<span class=\"line-number\">95</span>         * &lt;p>\n<span class=\"line-number\">96</span>         * 16 * 8 = 128\n<span class=\"line-number\">97</span>         *\n<span class=\"line-number\">98</span>         * @param hex\n<span class=\"line-number\">99</span>         * @return\n<span class=\"line-number\">100</span>         */</span>\n<span class=\"line-number\">101</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">parseAesKey</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> hex<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">102</span>            <span class=\"token keyword\">char</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> data <span class=\"token operator\">=</span> hex<span class=\"token punctuation\">.</span><span class=\"token function\">toCharArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">103</span>            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">.</span>length <span class=\"token operator\">!=</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">104</span>                <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Exception</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" ase key illegal \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">105</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">106</span>            <span class=\"token keyword\">return</span> <span class=\"token function\">decode</span><span class=\"token punctuation\">(</span>hex<span class=\"token punctuation\">.</span><span class=\"token function\">toCharArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">107</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">108</span>\n<span class=\"line-number\">109</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">decode</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> data<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">IllegalArgumentException</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">110</span>            <span class=\"token keyword\">int</span> len <span class=\"token operator\">=</span> data<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">111</span>\n<span class=\"line-number\">112</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> out <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span>len<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">113</span>\n<span class=\"line-number\">114</span>            <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> len<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">115</span>                <span class=\"token keyword\">int</span> f <span class=\"token operator\">=</span> <span class=\"token function\">toDigit</span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">116</span>                out<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">117</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">118</span>            <span class=\"token keyword\">return</span> out<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">119</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">120</span>\n<span class=\"line-number\">121</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">int</span> <span class=\"token function\">toDigit</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> ch<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">122</span>            <span class=\"token keyword\">return</span> HEX<span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span>ch<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">123</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">124</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">125</span>\n<span class=\"line-number\">126</span>    <span class=\"token keyword\">static</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">AesUtil</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">127</span>\n<span class=\"line-number\">128</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token class-name\">String</span> ALGORITHM <span class=\"token operator\">=</span> <span class=\"token string\">\"AES\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">129</span>\n<span class=\"line-number\">130</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token class-name\">String</span> ALGORITHM_STR <span class=\"token operator\">=</span> <span class=\"token string\">\"AES/ECB/PKCS5Padding\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">131</span>\n<span class=\"line-number\">132</span>        <span class=\"token comment\">/**\n<span class=\"line-number\">133</span>         * aes 加密\n<span class=\"line-number\">134</span>         */</span>\n<span class=\"line-number\">135</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">encrypt</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> src<span class=\"token punctuation\">,</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> aesKey<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">136</span>            <span class=\"token class-name\">Cipher</span> cipher <span class=\"token operator\">=</span> <span class=\"token function\">getCipher</span><span class=\"token punctuation\">(</span>aesKey<span class=\"token punctuation\">,</span> <span class=\"token class-name\">Cipher</span><span class=\"token punctuation\">.</span>ENCRYPT_MODE<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">137</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> ret <span class=\"token operator\">=</span> cipher<span class=\"token punctuation\">.</span><span class=\"token function\">doFinal</span><span class=\"token punctuation\">(</span>src<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">138</span>            <span class=\"token keyword\">return</span> ret<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">139</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">140</span>\n<span class=\"line-number\">141</span>        <span class=\"token comment\">/**\n<span class=\"line-number\">142</span>         * aes 解密\n<span class=\"line-number\">143</span>         */</span>\n<span class=\"line-number\">144</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">decrypt</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> src<span class=\"token punctuation\">,</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> aesKey<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">145</span>            <span class=\"token class-name\">Cipher</span> cipher <span class=\"token operator\">=</span> <span class=\"token function\">getCipher</span><span class=\"token punctuation\">(</span>aesKey<span class=\"token punctuation\">,</span> <span class=\"token class-name\">Cipher</span><span class=\"token punctuation\">.</span>DECRYPT_MODE<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">146</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> original <span class=\"token operator\">=</span> cipher<span class=\"token punctuation\">.</span><span class=\"token function\">doFinal</span><span class=\"token punctuation\">(</span>src<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">147</span>            <span class=\"token keyword\">return</span> original<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">148</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">149</span>\n<span class=\"line-number\">150</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">Cipher</span> <span class=\"token function\">getCipher</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> aesKey<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> mode<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">Exception</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">151</span>            <span class=\"token class-name\">SecretKeySpec</span> secretKeySpec <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">SecretKeySpec</span><span class=\"token punctuation\">(</span>aesKey<span class=\"token punctuation\">,</span> ALGORITHM<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">152</span>            <span class=\"token class-name\">Cipher</span> cipher <span class=\"token operator\">=</span> <span class=\"token class-name\">Cipher</span><span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span>ALGORITHM_STR<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">153</span>            cipher<span class=\"token punctuation\">.</span><span class=\"token function\">init</span><span class=\"token punctuation\">(</span>mode<span class=\"token punctuation\">,</span> secretKeySpec<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">154</span>            <span class=\"token keyword\">return</span> cipher<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">155</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">156</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">157</span>\n<span class=\"line-number\">158</span>    <span class=\"token keyword\">static</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Base64Util</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">159</span>\n<span class=\"line-number\">160</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">Encoder</span> ENCODER <span class=\"token operator\">=</span> <span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token function\">getEncoder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">161</span>\n<span class=\"line-number\">162</span>        <span class=\"token comment\">// base64 加密</span>\n<span class=\"line-number\">163</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token class-name\">Decoder</span> DECODER <span class=\"token operator\">=</span> <span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token function\">getDecoder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">164</span>\n<span class=\"line-number\">165</span>        <span class=\"token comment\">/**\n<span class=\"line-number\">166</span>         * base64加密\n<span class=\"line-number\">167</span>         *\n<span class=\"line-number\">168</span>         * @param arr\n<span class=\"line-number\">169</span>         * @return\n<span class=\"line-number\">170</span>         */</span>\n<span class=\"line-number\">171</span>        <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span> <span class=\"token function\">encodeBase64</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arr<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">172</span>            <span class=\"token class-name\">String</span> base64 <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">173</span>            <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">174</span>                base64 <span class=\"token operator\">=</span> ENCODER<span class=\"token punctuation\">.</span><span class=\"token function\">encodeToString</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">175</span>            <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Exception</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">176</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">177</span>            <span class=\"token keyword\">return</span> base64<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">178</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">179</span>\n<span class=\"line-number\">180</span>        <span class=\"token comment\">/**\n<span class=\"line-number\">181</span>         * base64解密\n<span class=\"line-number\">182</span>         *\n<span class=\"line-number\">183</span>         * @param str\n<span class=\"line-number\">184</span>         * @return\n<span class=\"line-number\">185</span>         */</span>\n<span class=\"line-number\">186</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">decodeBase64</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">187</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> encodeBase64 <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">188</span>            <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">189</span>                encodeBase64 <span class=\"token operator\">=</span> DECODER<span class=\"token punctuation\">.</span><span class=\"token function\">decode</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">190</span>            <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Exception</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">191</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">192</span>            <span class=\"token keyword\">return</span> encodeBase64<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">193</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">194</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">195</span><span class=\"token punctuation\">}</span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-1-radio-2\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-1\"\n            \n            data-index=\"2\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-cpp\"><code><span class=\"line-number\">1</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;iostream></span></span>\n<span class=\"line-number\">2</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;map></span></span>\n<span class=\"line-number\">3</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;curl/curl.h></span></span>\n<span class=\"line-number\">4</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;cryptopp/aes.h></span></span>\n<span class=\"line-number\">5</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;cryptopp/filters.h></span></span>\n<span class=\"line-number\">6</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">\"json/json.h\"</span></span>\n<span class=\"line-number\">7</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">\"aip/base/base64.h\"</span></span>\n<span class=\"line-number\">8</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">\"cryptopp/hex.h\"</span></span>\n<span class=\"line-number\">9</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">\"openssl/aes.h\"</span></span>\n<span class=\"line-number\">10</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;openssl/evp.h></span></span>\n<span class=\"line-number\">11</span><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;fstream></span></span>\n<span class=\"line-number\">12</span>\n<span class=\"line-number\">13</span><span class=\"token macro property\">#<span class=\"token directive keyword\">define</span> KEY_SIZE_16B            16</span>\n<span class=\"line-number\">14</span><span class=\"token macro property\">#<span class=\"token directive keyword\">define</span> KEY_SIZE_24B            24</span>\n<span class=\"line-number\">15</span><span class=\"token macro property\">#<span class=\"token directive keyword\">define</span> KEY_SIZE_32B            32</span>\n<span class=\"line-number\">16</span>\n<span class=\"line-number\">17</span><span class=\"token keyword\">using</span> CryptoPP<span class=\"token operator\">::</span>HexEncoder<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">18</span><span class=\"token keyword\">using</span> CryptoPP<span class=\"token operator\">::</span>HexDecoder<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">19</span>\n<span class=\"line-number\">20</span><span class=\"token keyword\">using</span> CryptoPP<span class=\"token operator\">::</span>StringSource<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">21</span>\n<span class=\"line-number\">22</span><span class=\"token comment\">// libcurl库下载链接：https://curl.haxx.se/download.html</span>\n<span class=\"line-number\">23</span><span class=\"token comment\">// jsoncpp库下载链接：https://github.com/open-source-parsers/jsoncpp/</span>\n<span class=\"line-number\">24</span><span class=\"token comment\">//const static std::string request_url = \"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard\";</span>\n<span class=\"line-number\">25</span><span class=\"token comment\">//获取token</span>\n<span class=\"line-number\">26</span><span class=\"token keyword\">inline</span> size_t <span class=\"token function\">onWriteData</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span> <span class=\"token operator\">*</span>buffer<span class=\"token punctuation\">,</span> size_t size<span class=\"token punctuation\">,</span> size_t nmemb<span class=\"token punctuation\">,</span> <span class=\"token keyword\">void</span> <span class=\"token operator\">*</span>userp<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">27</span>    std<span class=\"token operator\">::</span>string <span class=\"token operator\">*</span>str <span class=\"token operator\">=</span> <span class=\"token keyword\">dynamic_cast</span><span class=\"token operator\">&lt;</span>std<span class=\"token operator\">::</span>string <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>std<span class=\"token operator\">::</span>string <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span> userp<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">28</span>    str<span class=\"token operator\">-></span><span class=\"token function\">append</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span> buffer<span class=\"token punctuation\">,</span> size <span class=\"token operator\">*</span> nmemb<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">29</span>    <span class=\"token keyword\">return</span> nmemb<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">30</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">31</span>\n<span class=\"line-number\">32</span><span class=\"token keyword\">int</span> <span class=\"token function\">get_token</span><span class=\"token punctuation\">(</span>\n<span class=\"line-number\">33</span>        std<span class=\"token operator\">::</span>string ak<span class=\"token punctuation\">,</span>\n<span class=\"line-number\">34</span>        std<span class=\"token operator\">::</span>string sk<span class=\"token punctuation\">,</span>\n<span class=\"line-number\">35</span>        std<span class=\"token operator\">::</span>string <span class=\"token operator\">*</span>token<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">36</span>    CURL <span class=\"token operator\">*</span>curl <span class=\"token operator\">=</span> <span class=\"token function\">curl_easy_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">37</span>    <span class=\"token keyword\">struct</span> <span class=\"token class-name\">curl_slist</span> <span class=\"token operator\">*</span>slist <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">38</span>    std<span class=\"token operator\">::</span>map<span class=\"token operator\">&lt;</span>std<span class=\"token operator\">::</span>string<span class=\"token punctuation\">,</span> std<span class=\"token operator\">::</span>string<span class=\"token operator\">></span> params<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">39</span>    std<span class=\"token operator\">::</span>string response<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">40</span>    std<span class=\"token operator\">::</span>string error<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">41</span>    params<span class=\"token punctuation\">[</span><span class=\"token string\">\"grant_type\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"client_credentials\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">42</span>    params<span class=\"token punctuation\">[</span><span class=\"token string\">\"client_id\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> ak<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">43</span>    params<span class=\"token punctuation\">[</span><span class=\"token string\">\"client_secret\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> sk<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">44</span>    std<span class=\"token operator\">::</span>string url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/oauth/2.0/token?\"</span>\n<span class=\"line-number\">45</span>                      <span class=\"token string\">\"grant_type=client_credentials&amp;client_id=\"</span> <span class=\"token operator\">+</span> ak <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;client_secret=\"</span> <span class=\"token operator\">+</span> sk<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">46</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_URL<span class=\"token punctuation\">,</span> url<span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">47</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_HTTPHEADER<span class=\"token punctuation\">,</span> slist<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">48</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_WRITEFUNCTION<span class=\"token punctuation\">,</span> onWriteData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">49</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_WRITEDATA<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>response<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">50</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_NOSIGNAL<span class=\"token punctuation\">,</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">51</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_CONNECTTIMEOUT_MS<span class=\"token punctuation\">,</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">52</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_TIMEOUT_MS<span class=\"token punctuation\">,</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">53</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_SSL_VERIFYPEER<span class=\"token punctuation\">,</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">54</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_SSL_VERIFYHOST<span class=\"token punctuation\">,</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">55</span>    <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_VERBOSE<span class=\"token punctuation\">,</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">56</span>    <span class=\"token keyword\">int</span> status_code <span class=\"token operator\">=</span> <span class=\"token function\">curl_easy_perform</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">57</span>    <span class=\"token function\">curl_easy_cleanup</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">58</span>    <span class=\"token function\">curl_slist_free_all</span><span class=\"token punctuation\">(</span>slist<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">59</span>    Json<span class=\"token operator\">::</span>CharReaderBuilder crbuilder<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">60</span>    std<span class=\"token operator\">::</span>unique_ptr<span class=\"token operator\">&lt;</span>Json<span class=\"token operator\">::</span>CharReader<span class=\"token operator\">></span> <span class=\"token function\">reader</span><span class=\"token punctuation\">(</span>crbuilder<span class=\"token punctuation\">.</span><span class=\"token function\">newCharReader</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">61</span>    Json<span class=\"token operator\">::</span>Value obj<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">62</span>    reader<span class=\"token operator\">-></span><span class=\"token function\">parse</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span><span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> response<span class=\"token punctuation\">.</span><span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> response<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>obj<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>error<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">63</span>    <span class=\"token operator\">*</span>token <span class=\"token operator\">=</span> obj<span class=\"token punctuation\">[</span><span class=\"token string\">\"access_token\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">asString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">64</span>\n<span class=\"line-number\">65</span>    <span class=\"token keyword\">return</span> status_code<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">66</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">67</span>\n<span class=\"line-number\">68</span>\n<span class=\"line-number\">69</span>std<span class=\"token operator\">::</span>string <span class=\"token function\">JsonToString</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">const</span> Json<span class=\"token operator\">::</span>Value <span class=\"token operator\">&amp;</span>root<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">70</span>    <span class=\"token keyword\">static</span> Json<span class=\"token operator\">::</span>Value def <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">71</span>        Json<span class=\"token operator\">::</span>Value def<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">72</span>        Json<span class=\"token operator\">::</span>StreamWriterBuilder<span class=\"token operator\">::</span><span class=\"token function\">setDefaults</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>def<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">73</span>        def<span class=\"token punctuation\">[</span><span class=\"token string\">\"emitUTF8\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">74</span>        <span class=\"token keyword\">return</span> def<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">75</span>    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">76</span>\n<span class=\"line-number\">77</span>    std<span class=\"token operator\">::</span>ostringstream stream<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">78</span>    Json<span class=\"token operator\">::</span>StreamWriterBuilder stream_builder<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">79</span>    stream_builder<span class=\"token punctuation\">.</span>settings_ <span class=\"token operator\">=</span> def<span class=\"token punctuation\">;</span><span class=\"token comment\">//Config emitUTF8</span>\n<span class=\"line-number\">80</span>    std<span class=\"token operator\">::</span>unique_ptr<span class=\"token operator\">&lt;</span>Json<span class=\"token operator\">::</span>StreamWriter<span class=\"token operator\">></span> <span class=\"token function\">writer</span><span class=\"token punctuation\">(</span>stream_builder<span class=\"token punctuation\">.</span><span class=\"token function\">newStreamWriter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">81</span>    writer<span class=\"token operator\">-></span><span class=\"token function\">write</span><span class=\"token punctuation\">(</span>root<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>stream<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">82</span>    <span class=\"token keyword\">return</span> stream<span class=\"token punctuation\">.</span><span class=\"token function\">str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">83</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">84</span>\n<span class=\"line-number\">85</span>\n<span class=\"line-number\">86</span><span class=\"token keyword\">int</span> <span class=\"token function\">hex_char_value</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> c<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">87</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>c <span class=\"token operator\">>=</span> <span class=\"token string\">'0'</span> <span class=\"token operator\">&amp;&amp;</span> c <span class=\"token operator\">&lt;=</span> <span class=\"token string\">'9'</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">88</span>        <span class=\"token keyword\">return</span> c <span class=\"token operator\">-</span> <span class=\"token string\">'0'</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">89</span>    <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>c <span class=\"token operator\">>=</span> <span class=\"token string\">'a'</span> <span class=\"token operator\">&amp;&amp;</span> c <span class=\"token operator\">&lt;=</span> <span class=\"token string\">'f'</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">90</span>        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>c <span class=\"token operator\">-</span> <span class=\"token string\">'a'</span> <span class=\"token operator\">+</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">91</span>    <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>c <span class=\"token operator\">>=</span> <span class=\"token string\">'A'</span> <span class=\"token operator\">&amp;&amp;</span> c <span class=\"token operator\">&lt;=</span> <span class=\"token string\">'F'</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">92</span>        <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>c <span class=\"token operator\">-</span> <span class=\"token string\">'A'</span> <span class=\"token operator\">+</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">93</span>    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">94</span>    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">95</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">96</span>\n<span class=\"line-number\">97</span>std<span class=\"token operator\">::</span>string <span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span>std<span class=\"token operator\">::</span>string res<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">98</span>    std<span class=\"token operator\">::</span>string lvStr<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">99</span>    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token number\">16</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">100</span>        <span class=\"token keyword\">int</span> x <span class=\"token operator\">=</span> <span class=\"token function\">hex_char_value</span><span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">101</span>        <span class=\"token keyword\">char</span> c <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">102</span>        std<span class=\"token operator\">::</span>cout <span class=\"token operator\">&lt;&lt;</span> c<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">103</span>        lvStr<span class=\"token punctuation\">.</span><span class=\"token function\">append</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">104</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">105</span>    <span class=\"token keyword\">return</span> lvStr<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">106</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">107</span>\n<span class=\"line-number\">108</span>std<span class=\"token operator\">::</span>string <span class=\"token function\">ecb_encrypt</span><span class=\"token punctuation\">(</span>std<span class=\"token operator\">::</span>string res<span class=\"token punctuation\">,</span> std<span class=\"token operator\">::</span>string source<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">109</span>    <span class=\"token keyword\">int</span> outlen <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">110</span>    <span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> source<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token number\">16</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">111</span>    <span class=\"token keyword\">int</span> tail <span class=\"token operator\">=</span> source<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">16</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">112</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>tail <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">113</span>        i<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">114</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">115</span>    <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> encData<span class=\"token punctuation\">[</span><span class=\"token number\">16</span> <span class=\"token operator\">*</span> i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">116</span>    EVP_CIPHER_CTX <span class=\"token operator\">*</span>ctx<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">117</span>    ctx <span class=\"token operator\">=</span> <span class=\"token function\">EVP_CIPHER_CTX_new</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">118</span>    <span class=\"token function\">EVP_CipherInit_ex</span><span class=\"token punctuation\">(</span>ctx<span class=\"token punctuation\">,</span> <span class=\"token function\">EVP_aes_128_ecb</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">119</span>                      <span class=\"token keyword\">reinterpret_cast</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">120</span>    <span class=\"token function\">EVP_CipherUpdate</span><span class=\"token punctuation\">(</span>ctx<span class=\"token punctuation\">,</span> encData<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>outlen<span class=\"token punctuation\">,</span> <span class=\"token keyword\">reinterpret_cast</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span>source<span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> source<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">121</span>    <span class=\"token function\">EVP_CipherFinal</span><span class=\"token punctuation\">(</span>ctx<span class=\"token punctuation\">,</span> encData <span class=\"token operator\">+</span> outlen<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>outlen<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">122</span>    <span class=\"token function\">EVP_CIPHER_CTX_free</span><span class=\"token punctuation\">(</span>ctx<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">123</span>    std<span class=\"token operator\">::</span>string data <span class=\"token operator\">=</span> aip<span class=\"token operator\">::</span><span class=\"token function\">base64_encode</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">reinterpret_cast</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span>encData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>encData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">124</span>    <span class=\"token keyword\">return</span> data<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">125</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">126</span>\n<span class=\"line-number\">127</span>std<span class=\"token operator\">::</span>string <span class=\"token function\">ecb_decrypt</span><span class=\"token punctuation\">(</span>std<span class=\"token operator\">::</span>string res<span class=\"token punctuation\">,</span> std<span class=\"token operator\">::</span>string decode<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">128</span>    std<span class=\"token operator\">::</span>string data <span class=\"token operator\">=</span> aip<span class=\"token operator\">::</span><span class=\"token function\">base64_decode</span><span class=\"token punctuation\">(</span>decode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">129</span>    <span class=\"token keyword\">int</span> decLen <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">130</span>    <span class=\"token keyword\">int</span> outlen <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">131</span>    <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> decData<span class=\"token punctuation\">[</span>data<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">132</span>    EVP_CIPHER_CTX <span class=\"token operator\">*</span>ctx2<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">133</span>    ctx2 <span class=\"token operator\">=</span> <span class=\"token function\">EVP_CIPHER_CTX_new</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">134</span>    <span class=\"token function\">EVP_CipherInit_ex</span><span class=\"token punctuation\">(</span>ctx2<span class=\"token punctuation\">,</span> <span class=\"token function\">EVP_aes_128_ecb</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">reinterpret_cast</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">135</span>                      <span class=\"token constant\">NULL</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">136</span>    <span class=\"token function\">EVP_CipherUpdate</span><span class=\"token punctuation\">(</span>ctx2<span class=\"token punctuation\">,</span> decData<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>outlen<span class=\"token punctuation\">,</span> <span class=\"token keyword\">reinterpret_cast</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> data<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">137</span>    decLen <span class=\"token operator\">=</span> outlen<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">138</span>    <span class=\"token function\">EVP_CipherFinal</span><span class=\"token punctuation\">(</span>ctx2<span class=\"token punctuation\">,</span> decData <span class=\"token operator\">+</span> outlen<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>outlen<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">139</span>    decLen <span class=\"token operator\">+=</span> outlen<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">140</span>    <span class=\"token function\">EVP_CIPHER_CTX_free</span><span class=\"token punctuation\">(</span>ctx2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">141</span>    decData<span class=\"token punctuation\">[</span>decLen<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string\">'\\0'</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">142</span>    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"decrypt: %s\\n\"</span><span class=\"token punctuation\">,</span> decData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">143</span>    std<span class=\"token operator\">::</span>string result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">144</span>    result <span class=\"token operator\">=</span> <span class=\"token keyword\">reinterpret_cast</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">></span><span class=\"token punctuation\">(</span>decData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">145</span>    <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">146</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">147</span>\n<span class=\"line-number\">148</span><span class=\"token keyword\">template</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">class</span> <span class=\"token class-name\">CharT</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Traits</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Allocator</span><span class=\"token operator\">></span>\n<span class=\"line-number\">149</span>std<span class=\"token operator\">::</span>basic_istream<span class=\"token operator\">&lt;</span>CharT<span class=\"token punctuation\">,</span> Traits<span class=\"token operator\">></span> <span class=\"token operator\">&amp;</span><span class=\"token function\">getall</span><span class=\"token punctuation\">(</span>std<span class=\"token operator\">::</span>basic_istream<span class=\"token operator\">&lt;</span>CharT<span class=\"token punctuation\">,</span> Traits<span class=\"token operator\">></span> <span class=\"token operator\">&amp;</span>input<span class=\"token punctuation\">,</span>\n<span class=\"line-number\">150</span>                                          std<span class=\"token operator\">::</span>basic_string<span class=\"token operator\">&lt;</span>CharT<span class=\"token punctuation\">,</span> Traits<span class=\"token punctuation\">,</span> Allocator<span class=\"token operator\">></span> <span class=\"token operator\">&amp;</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">151</span>    std<span class=\"token operator\">::</span>ostringstream oss<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">152</span>    oss <span class=\"token operator\">&lt;&lt;</span> input<span class=\"token punctuation\">.</span><span class=\"token function\">rdbuf</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">153</span>    str<span class=\"token punctuation\">.</span><span class=\"token function\">assign</span><span class=\"token punctuation\">(</span>oss<span class=\"token punctuation\">.</span><span class=\"token function\">str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">154</span>    <span class=\"token keyword\">return</span> input<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">155</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">156</span>\n<span class=\"line-number\">157</span><span class=\"token keyword\">inline</span> <span class=\"token keyword\">int</span> <span class=\"token function\">get_file_content</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>filename<span class=\"token punctuation\">,</span> std<span class=\"token operator\">::</span>string <span class=\"token operator\">*</span>out<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">158</span>    std<span class=\"token operator\">::</span>ifstream <span class=\"token function\">in</span><span class=\"token punctuation\">(</span>filename<span class=\"token punctuation\">,</span> std<span class=\"token operator\">::</span>ios<span class=\"token operator\">::</span>in <span class=\"token operator\">|</span> std<span class=\"token operator\">::</span>ios<span class=\"token operator\">::</span>binary<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">159</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">160</span>        <span class=\"token function\">getall</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">,</span> <span class=\"token operator\">*</span>out<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">161</span>        <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">162</span>    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">163</span>        <span class=\"token keyword\">return</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">164</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">165</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">166</span>\n<span class=\"line-number\">167</span><span class=\"token comment\">/**\n<span class=\"line-number\">168</span> * 身份证识别\n<span class=\"line-number\">169</span> * @return 调用成功返回0，发生错误返回其他错误码\n<span class=\"line-number\">170</span> */</span>\n<span class=\"line-number\">171</span>Json<span class=\"token operator\">::</span>Value <span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">const</span> std<span class=\"token operator\">::</span>string <span class=\"token operator\">&amp;</span>access_token<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">172</span>    Json<span class=\"token operator\">::</span>Value obj<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">173</span>    std<span class=\"token operator\">::</span>string url <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=\"</span> <span class=\"token operator\">+</span> access_token<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">174</span>    CURL <span class=\"token operator\">*</span>curl <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">175</span>    CURLcode result_code<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">176</span>    <span class=\"token comment\">//图片内容</span>\n<span class=\"line-number\">177</span>    std<span class=\"token operator\">::</span>string file_content<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">178</span>    <span class=\"token function\">get_file_content</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/Users/lidang/pyproject/baidu/aip/api-python-sdk/test/resources/my.jpg\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>file_content<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">179</span><span class=\"token comment\">//    std::string base64 = aip::base64_encode(file_content.c_str(), (int) file_content.size());</span>\n<span class=\"line-number\">180</span>    std<span class=\"token operator\">::</span>string res <span class=\"token operator\">=</span> <span class=\"token string\">\"e1ad10e3d69689e0\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">181</span>    std<span class=\"token operator\">::</span>string base64 <span class=\"token operator\">=</span> <span class=\"token function\">ecb_encrypt</span><span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">,</span> file_content<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">182</span>    <span class=\"token keyword\">int</span> is_success<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">183</span>    std<span class=\"token operator\">::</span>string response<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">184</span>    std<span class=\"token operator\">::</span>string error<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">185</span>    curl <span class=\"token operator\">=</span> <span class=\"token function\">curl_easy_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">186</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">187</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_URL<span class=\"token punctuation\">,</span> url<span class=\"token punctuation\">.</span><span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">188</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_POST<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">189</span>        curl_httppost <span class=\"token operator\">*</span>post <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">190</span>        curl_httppost <span class=\"token operator\">*</span>last <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">191</span>        <span class=\"token function\">curl_formadd</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>post<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>last<span class=\"token punctuation\">,</span> CURLFORM_COPYNAME<span class=\"token punctuation\">,</span> <span class=\"token string\">\"id_card_side\"</span><span class=\"token punctuation\">,</span> CURLFORM_COPYCONTENTS<span class=\"token punctuation\">,</span> <span class=\"token string\">\"front\"</span><span class=\"token punctuation\">,</span> CURLFORM_END<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">192</span>        <span class=\"token function\">curl_formadd</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>post<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>last<span class=\"token punctuation\">,</span> CURLFORM_COPYNAME<span class=\"token punctuation\">,</span> <span class=\"token string\">\"image\"</span><span class=\"token punctuation\">,</span> CURLFORM_COPYCONTENTS<span class=\"token punctuation\">,</span> base64<span class=\"token punctuation\">.</span><span class=\"token function\">c_str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> CURLFORM_END<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">193</span>        <span class=\"token function\">curl_formadd</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>post<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>last<span class=\"token punctuation\">,</span> CURLFORM_COPYNAME<span class=\"token punctuation\">,</span> <span class=\"token string\">\"AESEncry\"</span><span class=\"token punctuation\">,</span> CURLFORM_COPYCONTENTS<span class=\"token punctuation\">,</span> <span class=\"token string\">\"true\"</span><span class=\"token punctuation\">,</span> CURLFORM_END<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">194</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_WRITEDATA<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>response<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">195</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_HTTPPOST<span class=\"token punctuation\">,</span> post<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">196</span>        <span class=\"token function\">curl_easy_setopt</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">,</span> CURLOPT_WRITEFUNCTION<span class=\"token punctuation\">,</span> onWriteData<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">197</span>        result_code <span class=\"token operator\">=</span> <span class=\"token function\">curl_easy_perform</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">198</span>        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>result_code <span class=\"token operator\">!=</span> CURLE_OK<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">199</span>            <span class=\"token function\">fprintf</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stderr</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"curl_easy_perform() failed: %s\\n\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">200</span>                    <span class=\"token function\">curl_easy_strerror</span><span class=\"token punctuation\">(</span>result_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">201</span>            is_success <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">202</span>            <span class=\"token keyword\">return</span> is_success<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">203</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">204</span>        Json<span class=\"token operator\">::</span>CharReaderBuilder crbuilder<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">205</span>        std<span class=\"token operator\">::</span>unique_ptr<span class=\"token operator\">&lt;</span>Json<span class=\"token operator\">::</span>CharReader<span class=\"token operator\">></span> <span class=\"token function\">reader</span><span class=\"token punctuation\">(</span>crbuilder<span class=\"token punctuation\">.</span><span class=\"token function\">newCharReader</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">206</span>        reader<span class=\"token operator\">-></span><span class=\"token function\">parse</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span><span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> response<span class=\"token punctuation\">.</span><span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> response<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>obj<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>error<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">207</span>        <span class=\"token function\">curl_easy_cleanup</span><span class=\"token punctuation\">(</span>curl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">208</span>        is_success <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">209</span>        <span class=\"token keyword\">return</span> obj<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">210</span>    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">211</span>        <span class=\"token function\">fprintf</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stderr</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"curl_easy_init() failed.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">212</span>        is_success <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">213</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">214</span>    <span class=\"token keyword\">return</span> obj<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">215</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">216</span>\n<span class=\"line-number\">217</span><span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">218</span>\n<span class=\"line-number\">219</span><span class=\"token comment\">//    aipt::test_ocr();</span>\n<span class=\"line-number\">220</span><span class=\"token comment\">//    aipt::test_kg();</span>\n<span class=\"line-number\">221</span><span class=\"token comment\">//    aipt::test_speech();</span>\n<span class=\"line-number\">222</span><span class=\"token comment\">//    aipt::test_face();</span>\n<span class=\"line-number\">223</span><span class=\"token comment\">//    aipt::test_nlp();</span>\n<span class=\"line-number\">224</span><span class=\"token comment\">//    aipt::test_ocr();</span>\n<span class=\"line-number\">225</span><span class=\"token comment\">//    aipt::test_image_censor();</span>\n<span class=\"line-number\">226</span><span class=\"token comment\">//    aipt::run_test(1);</span>\n<span class=\"line-number\">227</span>    std<span class=\"token operator\">::</span>string ak <span class=\"token operator\">=</span> <span class=\"token string\">\"ak\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">228</span>    std<span class=\"token operator\">::</span>string sk <span class=\"token operator\">=</span> <span class=\"token string\">\"sk\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">229</span>    std<span class=\"token operator\">::</span>string res <span class=\"token operator\">=</span> <span class=\"token string\">\"控制台的aeskey\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">230</span>    std<span class=\"token operator\">::</span>string output<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">231</span>    std<span class=\"token operator\">::</span>string token<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">232</span>    <span class=\"token function\">get_token</span><span class=\"token punctuation\">(</span>ak<span class=\"token punctuation\">,</span> sk<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>token<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">233</span>    Json<span class=\"token operator\">::</span>Value result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">234</span>    result <span class=\"token operator\">=</span> <span class=\"token function\">idcard</span><span class=\"token punctuation\">(</span>token<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">235</span>    std<span class=\"token operator\">::</span>cout <span class=\"token operator\">&lt;&lt;</span> result<span class=\"token punctuation\">[</span><span class=\"token string\">\"result\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">236</span>    std<span class=\"token operator\">::</span>string data <span class=\"token operator\">=</span> <span class=\"token function\">ecb_decrypt</span><span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">,</span> result<span class=\"token punctuation\">[</span><span class=\"token string\">\"result\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">asString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">237</span>    std<span class=\"token operator\">::</span>cout <span class=\"token operator\">&lt;&lt;</span> data <span class=\"token operator\">+</span> <span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">238</span><span class=\"token comment\">//    std::string encate = ecb_encrypt(res, \"123456789123456789\");</span>\n<span class=\"line-number\">239</span><span class=\"token comment\">//    std::cout &lt;&lt; encate + \"\\n\";</span>\n<span class=\"line-number\">240</span><span class=\"token comment\">//    std::string decode = ecb_decrypt(res,encate);</span>\n<span class=\"line-number\">241</span><span class=\"token comment\">//    std::cout &lt;&lt; decode+\"\\n\";</span>\n<span class=\"line-number\">242</span>    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">243</span><span class=\"token punctuation\">}</span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-1-radio-3\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-1\"\n            \n            data-index=\"3\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-php\"><code><span class=\"line-number\">1</span><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"line-number\">2</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">function</span> <span class=\"token function\">buildUrl</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$params</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">4</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">5</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">!</span><span class=\"token keyword\">empty</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$params</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">6</span>        <span class=\"token variable\">$str</span> <span class=\"token operator\">=</span> <span class=\"token function\">http_build_query</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$params</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">7</span>        <span class=\"token keyword\">return</span> <span class=\"token variable\">$url</span> <span class=\"token punctuation\">.</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strpos</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'?'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">===</span> <span class=\"token boolean constant\">false</span> <span class=\"token operator\">?</span> <span class=\"token single-quoted-string string\">'?'</span> <span class=\"token punctuation\">:</span> <span class=\"token single-quoted-string string\">'&amp;'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">.</span> <span class=\"token variable\">$str</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">8</span>    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">9</span>        <span class=\"token keyword\">return</span> <span class=\"token variable\">$url</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">10</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">11</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">12</span>\n<span class=\"line-number\">13</span><span class=\"token keyword\">function</span> <span class=\"token function\">buildHeaders</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$headers</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">14</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">15</span>    <span class=\"token variable\">$result</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">16</span>    <span class=\"token keyword\">foreach</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$headers</span> <span class=\"token keyword\">as</span> <span class=\"token variable\">$k</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$v</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">17</span>        <span class=\"token variable\">$result</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">sprintf</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'%s:%s'</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$k</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$v</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">18</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">19</span>    <span class=\"token keyword\">return</span> <span class=\"token variable\">$result</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">20</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">21</span>\n<span class=\"line-number\">22</span><span class=\"token keyword\">function</span> <span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$params</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$headers</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">23</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">24</span>    <span class=\"token variable\">$url</span> <span class=\"token operator\">=</span> <span class=\"token function\">buildUrl</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$params</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">25</span>\n<span class=\"line-number\">26</span>    <span class=\"token variable\">$headers</span> <span class=\"token operator\">=</span> <span class=\"token function\">array_merge</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$headers</span><span class=\"token punctuation\">,</span> <span class=\"token function\">buildHeaders</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$headers</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">27</span>\n<span class=\"line-number\">28</span>    <span class=\"token variable\">$ch</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">29</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_URL</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$url</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">30</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_HEADER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">31</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">32</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_SSL_VERIFYPEER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">33</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_HTTPHEADER</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$headers</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">34</span>    <span class=\"token variable\">$content</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">35</span>    <span class=\"token variable\">$code</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_getinfo</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLINFO_HTTP_CODE</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">36</span>\n<span class=\"line-number\">37</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$code</span> <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">38</span>        <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Exception</span><span class=\"token punctuation\">(</span><span class=\"token function\">curl_error</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">39</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">40</span>\n<span class=\"line-number\">41</span>    <span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">42</span>    <span class=\"token keyword\">return</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n<span class=\"line-number\">43</span>        <span class=\"token single-quoted-string string\">'code'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$code</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">44</span>        <span class=\"token single-quoted-string string\">'content'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$content</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">45</span>    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">46</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">47</span>\n<span class=\"line-number\">48</span><span class=\"token keyword\">function</span> <span class=\"token function\">post</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$headers</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">49</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">50</span>    <span class=\"token variable\">$ch</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">51</span>    <span class=\"token function\">var_dump</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">52</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_URL</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$url</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">53</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_POST</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">54</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_HEADER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">55</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_RETURNTRANSFER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">56</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_SSL_VERIFYPEER</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">57</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_HTTPHEADER</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$headers</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">58</span>    <span class=\"token function\">curl_setopt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLOPT_POSTFIELDS</span><span class=\"token punctuation\">,</span> <span class=\"token function\">is_array</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token function\">http_build_query</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token variable\">$data</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">59</span>\n<span class=\"line-number\">60</span>    <span class=\"token variable\">$content</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_exec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">61</span>    <span class=\"token variable\">$code</span> <span class=\"token operator\">=</span> <span class=\"token function\">curl_getinfo</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">CURLINFO_HTTP_CODE</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">62</span>\n<span class=\"line-number\">63</span>    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$code</span> <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">64</span>        <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Exception</span><span class=\"token punctuation\">(</span><span class=\"token function\">curl_error</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">65</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">66</span>\n<span class=\"line-number\">67</span>    <span class=\"token function\">curl_close</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">68</span>    <span class=\"token keyword\">return</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n<span class=\"line-number\">69</span>        <span class=\"token single-quoted-string string\">'code'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$code</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">70</span>        <span class=\"token single-quoted-string string\">'content'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$content</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">71</span>    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">72</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">73</span>\n<span class=\"line-number\">74</span><span class=\"token keyword\">function</span> <span class=\"token function\">decrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$sStr</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$key</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">75</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">76</span>    <span class=\"token variable\">$sStr</span> <span class=\"token operator\">=</span> <span class=\"token function\">base64_decode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$sStr</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">77</span>    <span class=\"token variable\">$decrypted</span> <span class=\"token operator\">=</span> <span class=\"token function\">openssl_decrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$sStr</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'AES-128-ECB'</span><span class=\"token punctuation\">,</span> <span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$key</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">OPENSSL_RAW_DATA</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">78</span>    <span class=\"token keyword\">return</span> <span class=\"token variable\">$decrypted</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">79</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">80</span>\n<span class=\"line-number\">81</span><span class=\"token keyword\">function</span> <span class=\"token function\">encrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$input</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$key</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">82</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">83</span>    <span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token function\">openssl_encrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$input</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'AES-128-ECB'</span><span class=\"token punctuation\">,</span> <span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$key</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">OPENSSL_RAW_DATA</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">84</span>    <span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token function\">base64_encode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">85</span>    <span class=\"token keyword\">return</span> <span class=\"token variable\">$data</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">86</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">87</span>\n<span class=\"line-number\">88</span><span class=\"token keyword\">function</span> <span class=\"token function\">bytesToStr</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$bytes</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">89</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">90</span>    <span class=\"token variable\">$str</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">''</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">91</span>    <span class=\"token keyword\">foreach</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$bytes</span> <span class=\"token keyword\">as</span> <span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">92</span>        <span class=\"token variable\">$str</span> <span class=\"token punctuation\">.</span><span class=\"token operator\">=</span> <span class=\"token function\">chr</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$ch</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">93</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">94</span>    <span class=\"token keyword\">return</span> <span class=\"token variable\">$str</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">95</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">96</span>\n<span class=\"line-number\">97</span><span class=\"token keyword\">function</span> <span class=\"token function\">get_key</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$key</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">98</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">99</span>    <span class=\"token variable\">$arr</span> <span class=\"token operator\">=</span> <span class=\"token function\">str_split</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$key</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">100</span>    <span class=\"token variable\">$bytes</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">101</span>    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$i</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$i</span> <span class=\"token operator\">&lt;</span> <span class=\"token function\">count</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$arr</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$i</span><span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">102</span>        <span class=\"token variable\">$bytes</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">ord</span><span class=\"token punctuation\">(</span><span class=\"token function\">chr</span><span class=\"token punctuation\">(</span><span class=\"token function\">hexdec</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$arr</span><span class=\"token punctuation\">[</span><span class=\"token variable\">$i</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">103</span>    <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">104</span>    <span class=\"token keyword\">return</span> <span class=\"token function\">bytesToStr</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$bytes</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">105</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">106</span>\n<span class=\"line-number\">107</span><span class=\"token variable\">$ak</span> <span class=\"token operator\">=</span> <span class=\"token double-quoted-string string\">\"ak\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">108</span><span class=\"token variable\">$sk</span> <span class=\"token operator\">=</span> <span class=\"token double-quoted-string string\">\"sk\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">109</span><span class=\"token shell-comment comment\">#aes key 从控制台 文字识别-应用列表-应用管理 获取</span>\n<span class=\"line-number\">110</span><span class=\"token variable\">$aes</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">'res'</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">111</span><span class=\"token variable\">$response</span> <span class=\"token operator\">=</span> <span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'https://aip.baidubce.com/oauth/2.0/token'</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span>\n<span class=\"line-number\">112</span>    <span class=\"token single-quoted-string string\">'grant_type'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'client_credentials'</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">113</span>    <span class=\"token single-quoted-string string\">'client_id'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$ak</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">114</span>    <span class=\"token single-quoted-string string\">'client_secret'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token variable\">$sk</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">115</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">116</span><span class=\"token variable\">$obj</span> <span class=\"token operator\">=</span> <span class=\"token function\">json_decode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$response</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'content'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">117</span>\n<span class=\"line-number\">118</span><span class=\"token variable\">$token</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$obj</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'access_token'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">119</span><span class=\"token variable\">$url</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token='</span> <span class=\"token punctuation\">.</span> <span class=\"token variable\">$token</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">120</span><span class=\"token variable\">$img</span> <span class=\"token operator\">=</span> <span class=\"token function\">file_get_contents</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'idcard.jpg'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">121</span><span class=\"token variable\">$img_data</span> <span class=\"token operator\">=</span> <span class=\"token function\">encrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$img</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$aes</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">122</span>\n<span class=\"line-number\">123</span><span class=\"token variable\">$data</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">124</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'image'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$img_data</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">125</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'id_card_side'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">'front'</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">126</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'AESEncry'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token single-quoted-string string\">'true'</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">127</span>\n<span class=\"line-number\">128</span><span class=\"token variable\">$response</span> <span class=\"token operator\">=</span> <span class=\"token function\">post</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$url</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$data</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">129</span><span class=\"token variable\">$result</span> <span class=\"token operator\">=</span><span class=\"token variable\">$response</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'content'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">130</span><span class=\"token variable\">$book</span> <span class=\"token operator\">=</span> <span class=\"token function\">json_decode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token punctuation\">,</span><span class=\"token boolean constant\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">131</span><span class=\"token variable\">$res</span><span class=\"token operator\">=</span><span class=\"token function\">decrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$book</span><span class=\"token punctuation\">[</span><span class=\"token double-quoted-string string\">\"result\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token variable\">$aes</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">132</span><span class=\"token keyword\">echo</span> <span class=\"token variable\">$res</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">133</span><span class=\"token comment\">//构造请求数据json_decode($ content, true);</span></span></code></pre>\n        </div>\n        \n        <input\n            id=\"code-block-group-1-radio-4\"\n            class=\"doc-tab-item-radio\"\n            type=\"radio\"\n            name=\"code-block-group-1\"\n            \n            data-index=\"4\"\n        />\n        <div class=\"doc-tab-content\">\n            <pre class=\"language-csharp\"><code><span class=\"line-number\">1</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">2</span><span class=\"token keyword\">using</span> NUnit<span class=\"token punctuation\">.</span>Framework<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Text<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">4</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Security<span class=\"token punctuation\">.</span>Cryptography<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">5</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>IO<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">6</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Net<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">7</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Collections<span class=\"token punctuation\">.</span>Generic<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">8</span><span class=\"token keyword\">using</span> Newtonsoft<span class=\"token punctuation\">.</span>Json<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">9</span><span class=\"token keyword\">using</span> Newtonsoft<span class=\"token punctuation\">.</span>Json<span class=\"token punctuation\">.</span>Linq<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">10</span><span class=\"token keyword\">using</span> System<span class=\"token punctuation\">.</span>Linq<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">11</span><span class=\"token keyword\">namespace</span> Baidu<span class=\"token punctuation\">.</span>Aip\n<span class=\"line-number\">12</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">13</span>    <span class=\"token punctuation\">[</span><span class=\"token class-name\">TestFixture</span><span class=\"token punctuation\">]</span>\n<span class=\"line-number\">14</span>    <span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Demo</span>\n<span class=\"line-number\">15</span>    <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">16</span>     \n<span class=\"line-number\">17</span>\n<span class=\"line-number\">18</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">getFileByte</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> fileName<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">19</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">20</span>            <span class=\"token class-name\">FileStream</span> filestream <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">FileStream</span><span class=\"token punctuation\">(</span>fileName<span class=\"token punctuation\">,</span> FileMode<span class=\"token punctuation\">.</span>Open<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">21</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arr <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span>filestream<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">22</span>            filestream<span class=\"token punctuation\">.</span><span class=\"token function\">Read</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span>filestream<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">23</span>            filestream<span class=\"token punctuation\">.</span><span class=\"token function\">Close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">24</span>            <span class=\"token keyword\">return</span> arr<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">25</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">26</span>         <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">ParseQueryString</span><span class=\"token punctuation\">(</span>Dictionary<span class=\"token operator\">&lt;</span><span class=\"token keyword\">string</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">string</span><span class=\"token operator\">></span> querys<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">27</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">28</span>            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>querys<span class=\"token punctuation\">.</span>Count <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">29</span>                <span class=\"token keyword\">return</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">30</span>            <span class=\"token keyword\">return</span> querys\n<span class=\"line-number\">31</span>                <span class=\"token punctuation\">.</span><span class=\"token function\">Select</span><span class=\"token punctuation\">(</span>pair <span class=\"token operator\">=></span> pair<span class=\"token punctuation\">.</span>Key <span class=\"token operator\">+</span> <span class=\"token string\">\"=\"</span> <span class=\"token operator\">+</span> pair<span class=\"token punctuation\">.</span>Value<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">32</span>                <span class=\"token punctuation\">.</span><span class=\"token function\">Aggregate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> a <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;\"</span> <span class=\"token operator\">+</span> b<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">33</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">34</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">StreamToString</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Stream</span> ss<span class=\"token punctuation\">,</span> <span class=\"token class-name\">Encoding</span> enc<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">35</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">36</span>            <span class=\"token keyword\">string</span> ret<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">37</span>            <span class=\"token keyword\">using</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> reader <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">StreamReader</span><span class=\"token punctuation\">(</span>ss<span class=\"token punctuation\">,</span> enc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">38</span>            <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">39</span>                ret <span class=\"token operator\">=</span> reader<span class=\"token punctuation\">.</span><span class=\"token function\">ReadToEnd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">40</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">41</span>            ss<span class=\"token punctuation\">.</span><span class=\"token function\">Close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">42</span>            <span class=\"token keyword\">return</span> ret<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">43</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">44</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">JObject</span> <span class=\"token function\">OpenApiFetchToken</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span> ak<span class=\"token punctuation\">,</span> <span class=\"token keyword\">string</span> sk<span class=\"token punctuation\">,</span> <span class=\"token keyword\">bool</span> throws <span class=\"token operator\">=</span> <span class=\"token keyword\">false</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">bool</span> debugLog <span class=\"token operator\">=</span> <span class=\"token keyword\">false</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">45</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">46</span>            <span class=\"token keyword\">var</span> querys <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Dictionary</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">string</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">string</span><span class=\"token operator\">></span>\n<span class=\"line-number\">47</span>            <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">48</span>                <span class=\"token punctuation\">{</span><span class=\"token string\">\"grant_type\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"client_credentials\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">49</span>                <span class=\"token punctuation\">{</span><span class=\"token string\">\"client_id\"</span><span class=\"token punctuation\">,</span> ak<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">50</span>                <span class=\"token punctuation\">{</span><span class=\"token string\">\"client_secret\"</span><span class=\"token punctuation\">,</span> sk<span class=\"token punctuation\">}</span>\n<span class=\"line-number\">51</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">52</span>            <span class=\"token keyword\">var</span> url <span class=\"token operator\">=</span> <span class=\"token keyword\">string</span><span class=\"token punctuation\">.</span><span class=\"token function\">Format</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}?{1}\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"https://aip.baidubce.com/oauth/2.0/token\"</span><span class=\"token punctuation\">,</span> <span class=\"token function\">ParseQueryString</span><span class=\"token punctuation\">(</span>querys<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">53</span>            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>debugLog<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">54</span>                Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">55</span>            <span class=\"token keyword\">var</span> webReq <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>HttpWebRequest<span class=\"token punctuation\">)</span>WebRequest<span class=\"token punctuation\">.</span><span class=\"token function\">Create</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">56</span>            <span class=\"token keyword\">try</span>\n<span class=\"line-number\">57</span>            <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">58</span>                <span class=\"token keyword\">var</span> resp <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>HttpWebResponse<span class=\"token punctuation\">)</span>webReq<span class=\"token punctuation\">.</span><span class=\"token function\">GetResponse</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">59</span>                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>resp<span class=\"token punctuation\">.</span>StatusCode <span class=\"token operator\">==</span> HttpStatusCode<span class=\"token punctuation\">.</span>OK<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">60</span>                <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">61</span>                    <span class=\"token keyword\">var</span> respStr <span class=\"token operator\">=</span> <span class=\"token function\">StreamToString</span><span class=\"token punctuation\">(</span>resp<span class=\"token punctuation\">.</span><span class=\"token function\">GetResponseStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> Encoding<span class=\"token punctuation\">.</span>UTF8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">62</span>                    <span class=\"token keyword\">var</span> obj <span class=\"token operator\">=</span> JsonConvert<span class=\"token punctuation\">.</span><span class=\"token function\">DeserializeObject</span><span class=\"token punctuation\">(</span>respStr<span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> JObject<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">63</span>                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">[</span><span class=\"token string\">\"access_token\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token keyword\">null</span> <span class=\"token operator\">&amp;&amp;</span> obj<span class=\"token punctuation\">[</span><span class=\"token string\">\"expires_in\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">64</span>                        <span class=\"token keyword\">return</span> obj<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">65</span>                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>throws<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">66</span>                        <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">AipException</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Failed to request token. \"</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span><span class=\"token punctuation\">)</span>obj<span class=\"token punctuation\">[</span><span class=\"token string\">\"error_description\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">67</span>                    <span class=\"token keyword\">return</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">68</span>                <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">69</span>                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>throws<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">70</span>                    <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">AipException</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Failed to request token. \"</span> <span class=\"token operator\">+</span> resp<span class=\"token punctuation\">.</span>StatusCode <span class=\"token operator\">+</span> resp<span class=\"token punctuation\">.</span>StatusDescription<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">71</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">72</span>            <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Exception</span> e<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">73</span>            <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">74</span>                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>throws<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">75</span>                    <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">AipException</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Failed to request token. \"</span> <span class=\"token operator\">+</span> e<span class=\"token punctuation\">.</span>Message<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">76</span>                <span class=\"token keyword\">return</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">77</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">78</span>\n<span class=\"line-number\">79</span>            <span class=\"token keyword\">return</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">80</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">81</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">UrlEncode</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span> str<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">82</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">83</span>            <span class=\"token class-name\">StringBuilder</span> sb <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">StringBuilder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">84</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> byStr <span class=\"token operator\">=</span> System<span class=\"token punctuation\">.</span>Text<span class=\"token punctuation\">.</span>Encoding<span class=\"token punctuation\">.</span>UTF8<span class=\"token punctuation\">.</span><span class=\"token function\">GetBytes</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//默认是System.Text.Encoding.Default.GetBytes(str)</span>\n<span class=\"line-number\">85</span>            <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> byStr<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">86</span>            <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">87</span>                sb<span class=\"token punctuation\">.</span><span class=\"token function\">Append</span><span class=\"token punctuation\">(</span><span class=\"token string\">@\"%\"</span> <span class=\"token operator\">+</span> Convert<span class=\"token punctuation\">.</span><span class=\"token function\">ToString</span><span class=\"token punctuation\">(</span>byStr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">88</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">89</span>\n<span class=\"line-number\">90</span>            <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>sb<span class=\"token punctuation\">.</span><span class=\"token function\">ToString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">91</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">92</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">Encrypt</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span> toEncrypt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">string</span> key<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">93</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">94</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> keyArray <span class=\"token operator\">=</span> <span class=\"token function\">GetKey</span><span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">95</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> toEncryptArray <span class=\"token operator\">=</span> UTF8Encoding<span class=\"token punctuation\">.</span>UTF8<span class=\"token punctuation\">.</span><span class=\"token function\">GetBytes</span><span class=\"token punctuation\">(</span>toEncrypt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">96</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hello World！\"</span> <span class=\"token operator\">+</span> keyArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">97</span>            <span class=\"token class-name\">RijndaelManaged</span> rDel <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">RijndaelManaged</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">98</span>            rDel<span class=\"token punctuation\">.</span>Key <span class=\"token operator\">=</span> keyArray<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">99</span>            rDel<span class=\"token punctuation\">.</span>Mode <span class=\"token operator\">=</span> CipherMode<span class=\"token punctuation\">.</span>ECB<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">100</span>            rDel<span class=\"token punctuation\">.</span>Padding <span class=\"token operator\">=</span> PaddingMode<span class=\"token punctuation\">.</span>PKCS7<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">101</span>\n<span class=\"line-number\">102</span>            <span class=\"token class-name\">ICryptoTransform</span> cTransform <span class=\"token operator\">=</span> rDel<span class=\"token punctuation\">.</span><span class=\"token function\">CreateEncryptor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">103</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> resultArray <span class=\"token operator\">=</span> cTransform<span class=\"token punctuation\">.</span><span class=\"token function\">TransformFinalBlock</span><span class=\"token punctuation\">(</span>toEncryptArray<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> toEncryptArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">104</span>\n<span class=\"line-number\">105</span>            <span class=\"token keyword\">return</span> Convert<span class=\"token punctuation\">.</span><span class=\"token function\">ToBase64String</span><span class=\"token punctuation\">(</span>resultArray<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> resultArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">106</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">107</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">Encrypt</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> toEncryptArray<span class=\"token punctuation\">,</span> <span class=\"token keyword\">string</span> key<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">108</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">109</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> keyArray <span class=\"token operator\">=</span> <span class=\"token function\">GetKey</span><span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">110</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hello World！\"</span> <span class=\"token operator\">+</span> keyArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">111</span>            <span class=\"token class-name\">RijndaelManaged</span> rDel <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">RijndaelManaged</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">112</span>            rDel<span class=\"token punctuation\">.</span>Key <span class=\"token operator\">=</span> keyArray<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">113</span>            rDel<span class=\"token punctuation\">.</span>Mode <span class=\"token operator\">=</span> CipherMode<span class=\"token punctuation\">.</span>ECB<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">114</span>            rDel<span class=\"token punctuation\">.</span>Padding <span class=\"token operator\">=</span> PaddingMode<span class=\"token punctuation\">.</span>PKCS7<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">115</span>\n<span class=\"line-number\">116</span>            <span class=\"token class-name\">ICryptoTransform</span> cTransform <span class=\"token operator\">=</span> rDel<span class=\"token punctuation\">.</span><span class=\"token function\">CreateEncryptor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">117</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> resultArray <span class=\"token operator\">=</span> cTransform<span class=\"token punctuation\">.</span><span class=\"token function\">TransformFinalBlock</span><span class=\"token punctuation\">(</span>toEncryptArray<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> toEncryptArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">118</span>\n<span class=\"line-number\">119</span>            <span class=\"token keyword\">return</span> Convert<span class=\"token punctuation\">.</span><span class=\"token function\">ToBase64String</span><span class=\"token punctuation\">(</span>resultArray<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> resultArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">120</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">121</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span>  <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">GetKey</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span> key<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">122</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">123</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> result <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span>key<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">124</span>            <span class=\"token keyword\">char</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> array <span class=\"token operator\">=</span> key<span class=\"token punctuation\">.</span><span class=\"token function\">ToArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">125</span>            <span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">126</span>            <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> a <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> a <span class=\"token operator\">&lt;</span> array<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">;</span> a <span class=\"token operator\">=</span> a <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">127</span>            <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">128</span>                <span class=\"token keyword\">string</span> ch <span class=\"token operator\">=</span>array<span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">129</span>                <span class=\"token keyword\">int</span> val<span class=\"token operator\">=</span>Convert<span class=\"token punctuation\">.</span><span class=\"token function\">ToInt32</span><span class=\"token punctuation\">(</span>ch<span class=\"token punctuation\">,</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">130</span>                result<span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">)</span>val<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">131</span>            <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">132</span>            <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">133</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">134</span>    \n<span class=\"line-number\">135</span>\n<span class=\"line-number\">136</span>\n<span class=\"line-number\">137</span>        <span class=\"token comment\">/*\n<span class=\"line-number\">138</span>         * AES解密\n<span class=\"line-number\">139</span>         * */</span>\n<span class=\"line-number\">140</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">string</span> <span class=\"token function\">Decrypt</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span> toDecrypt<span class=\"token punctuation\">,</span> <span class=\"token keyword\">string</span> key<span class=\"token punctuation\">)</span>\n<span class=\"line-number\">141</span>        <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">142</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> keyArray <span class=\"token operator\">=</span> <span class=\"token function\">GetKey</span><span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">143</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> toEncryptArray <span class=\"token operator\">=</span> Convert<span class=\"token punctuation\">.</span><span class=\"token function\">FromBase64String</span><span class=\"token punctuation\">(</span>toDecrypt<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">144</span>\n<span class=\"line-number\">145</span>            <span class=\"token class-name\">RijndaelManaged</span> rDel <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">RijndaelManaged</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">146</span>            rDel<span class=\"token punctuation\">.</span>Key <span class=\"token operator\">=</span> keyArray<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">147</span>            rDel<span class=\"token punctuation\">.</span>Mode <span class=\"token operator\">=</span> CipherMode<span class=\"token punctuation\">.</span>ECB<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">148</span>            rDel<span class=\"token punctuation\">.</span>Padding <span class=\"token operator\">=</span> PaddingMode<span class=\"token punctuation\">.</span>PKCS7<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">149</span>\n<span class=\"line-number\">150</span>            <span class=\"token class-name\">ICryptoTransform</span> cTransform <span class=\"token operator\">=</span> rDel<span class=\"token punctuation\">.</span><span class=\"token function\">CreateDecryptor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">151</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> resultArray <span class=\"token operator\">=</span> cTransform<span class=\"token punctuation\">.</span><span class=\"token function\">TransformFinalBlock</span><span class=\"token punctuation\">(</span>toEncryptArray<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> toEncryptArray<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">152</span>\n<span class=\"line-number\">153</span>            <span class=\"token keyword\">return</span> UTF8Encoding<span class=\"token punctuation\">.</span>UTF8<span class=\"token punctuation\">.</span><span class=\"token function\">GetString</span><span class=\"token punctuation\">(</span>resultArray<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">154</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">155</span>\n<span class=\"line-number\">156</span>        <span class=\"token punctuation\">[</span><span class=\"token class-name\">Test</span><span class=\"token punctuation\">]</span>\n<span class=\"line-number\">157</span>        <span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">demo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">158</span>          <span class=\"token punctuation\">{</span>\n<span class=\"line-number\">159</span>            <span class=\"token keyword\">string</span> res <span class=\"token operator\">=</span> <span class=\"token string\">\"控制台的aeskey\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">160</span>            <span class=\"token keyword\">string</span> ak <span class=\"token operator\">=</span> <span class=\"token string\">\"ak\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">161</span>            <span class=\"token keyword\">string</span> sk <span class=\"token operator\">=</span> <span class=\"token string\">\"sk\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">162</span>\n<span class=\"line-number\">163</span>            <span class=\"token keyword\">string</span> host <span class=\"token operator\">=</span> <span class=\"token string\">\"https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=\"</span> <span class=\"token operator\">+</span> <span class=\"token function\">OpenApiFetchToken</span><span class=\"token punctuation\">(</span>ak<span class=\"token punctuation\">,</span> sk<span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"access_token\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">164</span>            <span class=\"token comment\">//Console.WriteLine(\"url:\"+host);</span>\n<span class=\"line-number\">165</span>            <span class=\"token class-name\">Encoding</span> encoding <span class=\"token operator\">=</span> Encoding<span class=\"token punctuation\">.</span>Default<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">166</span>            <span class=\"token class-name\">HttpWebRequest</span> request <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>HttpWebRequest<span class=\"token punctuation\">)</span>WebRequest<span class=\"token punctuation\">.</span><span class=\"token function\">Create</span><span class=\"token punctuation\">(</span>host<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">167</span>            request<span class=\"token punctuation\">.</span>Method <span class=\"token operator\">=</span> <span class=\"token string\">\"post\"</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">168</span>            request<span class=\"token punctuation\">.</span>KeepAlive <span class=\"token operator\">=</span> <span class=\"token keyword\">true</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">169</span>            <span class=\"token comment\">//// 图片的base64编码</span>\n<span class=\"line-number\">170</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> file <span class=\"token operator\">=</span> <span class=\"token function\">getFileByte</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"图片路径\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">171</span>            <span class=\"token keyword\">string</span> base64<span class=\"token operator\">=</span> <span class=\"token function\">Encrypt</span><span class=\"token punctuation\">(</span>file<span class=\"token punctuation\">,</span> res<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">172</span>            <span class=\"token keyword\">string</span> str <span class=\"token operator\">=</span> <span class=\"token string\">\"AESEncry=true&amp;id_card_side=\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"front\"</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"&amp;image=\"</span> <span class=\"token operator\">+</span> <span class=\"token function\">UrlEncode</span><span class=\"token punctuation\">(</span>base64<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">173</span>            <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> buffer <span class=\"token operator\">=</span> encoding<span class=\"token punctuation\">.</span><span class=\"token function\">GetBytes</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">174</span>            request<span class=\"token punctuation\">.</span>ContentLength <span class=\"token operator\">=</span> buffer<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">175</span>            request<span class=\"token punctuation\">.</span><span class=\"token function\">GetRequestStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">Write</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">176</span>            <span class=\"token class-name\">HttpWebResponse</span> response <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>HttpWebResponse<span class=\"token punctuation\">)</span>request<span class=\"token punctuation\">.</span><span class=\"token function\">GetResponse</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">177</span>            <span class=\"token class-name\">StreamReader</span> reader <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">StreamReader</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span><span class=\"token function\">GetResponseStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> Encoding<span class=\"token punctuation\">.</span>Default<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">178</span>            <span class=\"token keyword\">string</span> result <span class=\"token operator\">=</span> reader<span class=\"token punctuation\">.</span><span class=\"token function\">ReadToEnd</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">179</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"身份证识别:\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">180</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">181</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"解密\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">182</span>            <span class=\"token keyword\">var</span> obj <span class=\"token operator\">=</span> JsonConvert<span class=\"token punctuation\">.</span><span class=\"token function\">DeserializeObject</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> JObject<span class=\"token punctuation\">;</span>\n<span class=\"line-number\">183</span>            <span class=\"token keyword\">var</span> content<span class=\"token operator\">=</span><span class=\"token function\">Decrypt</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">string</span><span class=\"token punctuation\">)</span>obj<span class=\"token punctuation\">[</span><span class=\"token string\">\"result\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> res<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">184</span>            Console<span class=\"token punctuation\">.</span><span class=\"token function\">WriteLine</span><span class=\"token punctuation\">(</span>content<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"line-number\">185</span>        <span class=\"token punctuation\">}</span>\n<span class=\"line-number\">186</span><span class=\"token punctuation\">}</span>\n<span class=\"line-number\">187</span><span class=\"token punctuation\">}</span></code></pre>\n        </div>\n        \n            </div>\n        </div>\n    </div>\n  \n<h3 id=\"返回说明-1\"><a href=\"#%E8%BF%94%E5%9B%9E%E8%AF%B4%E6%98%8E-1\" aria-label=\"返回说明 1 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>返回说明</h3>\n<p><strong>返回示例</strong></p>\n\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">JSON</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-json\"><code><span class=\"line-number\">1</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">2</span>    <span class=\"token property\">\"log_id\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"2648325511\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">3</span>    <span class=\"token property\">\"result\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"密文\"</span>\n<span class=\"line-number\">4</span><span class=\"token punctuation\">}</span></code></pre>\n            </div>\n        </div>\n    </div>\n  \n<p>请对result密文进行base64解码后得到byte流，再进行AES解密，得到识别结果的明文。</p>","fields":{"slug":"Xmhaazmyd","title":"身份证识别","date":"2025-11-04","extractedHeadings":[]},"headings":[{"value":"接口描述","depth":2},{"value":"在线调试","depth":2},{"value":"请求说明","depth":2},{"value":"返回说明","depth":2},{"value":"AES加密","depth":2},{"value":"请求说明","depth":3},{"value":"返回说明","depth":3}]}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"Xmhaazmyd","prev":{"id":"Cmhaaus52","name":"手写文字识别","path":"Cmhaaus52","filePath":"工具及MCP/视觉智能/手写文字识别/通用场景文字识别.md","seo":{"title":"","keywords":"","description":"","serviceType":null},"parentIds":["Qmh8sjs6r","dmha6gfp2","tmha7h8zb"],"parents":[{"id":"Qmh8sjs6r","documentId":"55e80d00-1738-41da-8d8e-153fadfa96d2","name":"工具及MCP","repoName":"aigallery","filePath":"工具及MCP","disabled":false,"path":"Qmh8sjs6r","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":{"title":null,"keywords":null,"description":null,"serviceType":null},"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"dmha6gfp2","documentId":"2f8cfce9-1464-4ac9-ae32-4e0fa55b8330","name":"视觉智能","repoName":"aigallery","filePath":"工具及MCP/视觉智能","disabled":false,"path":"dmha6gfp2","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"tmha7h8zb","documentId":"37bb13f9-2e30-4ff8-af1a-4df4c2665ead","name":"手写文字识别","repoName":"aigallery","filePath":"工具及MCP/视觉智能/手写文字识别","disabled":false,"path":"tmha7h8zb","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":{"title":null,"keywords":null,"description":null,"serviceType":null},"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""}]},"next":{"id":"Dmhaayz0f","name":"卡证文字识别计费说明","path":"Dmhaayz0f","filePath":"工具及MCP/视觉智能/身份证识别/卡证文字识别.md","seo":{"title":"","keywords":"","description":"","serviceType":null},"parentIds":["Qmh8sjs6r","dmha6gfp2","qmha7i7ah"],"parents":[{"id":"Qmh8sjs6r","documentId":"55e80d00-1738-41da-8d8e-153fadfa96d2","name":"工具及MCP","repoName":"aigallery","filePath":"工具及MCP","disabled":false,"path":"Qmh8sjs6r","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":{"title":null,"keywords":null,"description":null,"serviceType":null},"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"dmha6gfp2","documentId":"2f8cfce9-1464-4ac9-ae32-4e0fa55b8330","name":"视觉智能","repoName":"aigallery","filePath":"工具及MCP/视觉智能","disabled":false,"path":"dmha6gfp2","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"qmha7i7ah","documentId":"270361e3-dd7d-4fb3-97b5-b930d7e3a33f","name":"身份证识别","repoName":"aigallery","filePath":"工具及MCP/视觉智能/身份证识别","disabled":false,"path":"qmha7i7ah","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""}]},"parents":[{"id":"Qmh8sjs6r","documentId":"55e80d00-1738-41da-8d8e-153fadfa96d2","name":"工具及MCP","repoName":"aigallery","filePath":"工具及MCP","disabled":false,"path":"Qmh8sjs6r","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":{"title":null,"keywords":null,"description":null,"serviceType":null},"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"dmha6gfp2","documentId":"2f8cfce9-1464-4ac9-ae32-4e0fa55b8330","name":"视觉智能","repoName":"aigallery","filePath":"工具及MCP/视觉智能","disabled":false,"path":"dmha6gfp2","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""},{"id":"qmha7i7ah","documentId":"270361e3-dd7d-4fb3-97b5-b930d7e3a33f","name":"身份证识别","repoName":"aigallery","filePath":"工具及MCP/视觉智能/身份证识别","disabled":false,"path":"qmha7i7ah","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":""}],"specificSeo":{"title":"","keywords":"","description":"","serviceType":null}}}}