签名规则
<h2>1.数据加密、签名规则</h2>
<h3>1.1 通过时间戳(毫秒)生成16位随机字符串 -> ASE-KEY</h3>
<ol>
<li><code>timestamp</code>:(毫秒)</li>
<li><code>ase-key</code>: timestamp 通过 SHA-256 加密取 4-20 位的获得随机字符</li>
</ol>
<h3>1.2 根据获取的 ASE-KEY 为密钥,对所有参数进行 ASE 加密</h3>
<ol>
<li>指定 AES 加密算法,ECB 模式,PKCS5Padding 填充方式</li>
<li><code>AES/ECB/PKCS5Padding</code></li>
<li><code>sign</code> & <code>timestamp</code> & <code>merchantNo</code> 不参与加密、签名</li>
</ol>
<h3>1.3 签名规则</h3>
<ol>
<li>请求参数按照 a-z 排序并用【&】拼接,如【a=1&b=2&c=3】</li>
<li>在参数拼接后,拼接 <strong>商户KEY</strong> ,得到【a=1&b=2&c=3&key="keyStr"】</li>
<li>将拼接完成的字符串通过 <code>MD5</code> 加密,结果转为大写,得到【sign】值</li>
<li>将【sign】和【timestamp】和【merchantNo】添加到请求的JSON数据里</li>
<li>验签通过前面的签名方式,获取到【sign】再对比接口参数里的【sign】对比是否一致</li>
</ol>
<hr />
<h2>加密、签名工具 DEMO</h2>
<p>[【JAVA】AES加密DEMO](/payp/11558643234173824 "【JAVA】AES加密DEMO")</p>
<p>[【JAVA】签名DEMO](/payp/11558643241781511 "【JAVA】签名DEMO")</p>