跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 为什么 PHP 和 Java 对于 SHA1withRSA 签名的结果不一致
未分類
24 2 月 2021

为什么 PHP 和 Java 对于 SHA1withRSA 签名的结果不一致

为什么 PHP 和 Java 对于 SHA1withRSA 签名的结果不一致

資深大佬 : unbeau 2

求大神解答,万分感谢

PHP 源码:

$xmldata = ‘<?xml version=”1.0″ encoding=”GBK”?>
<AIPG>
<INFO>
<TRX_CODE>310001</TRX_CODE>
<VERSION>05</VERSION>
<DATA_TYPE>2</DATA_TYPE>
<LEVEL>5</LEVEL>
<MERCHANT_ID>200604000012282</MERCHANT_ID>
<USER_NAME>20060400001228204</USER_NAME>
<USER_PASS>111111</USER_PASS>
<REQ_SN>200604000012282-1526894131128</REQ_SN>

</INFO>
<FAGRA>
<MERCHANT_ID>200604000012282</MERCHANT_ID>
<BANK_CODE>0104</BANK_CODE>
<ACCOUNT_TYPE>00</ACCOUNT_TYPE>
<ACCOUNT_NO>62284811119386045775</ACCOUNT_NO>
<ACCOUNT_NAME>小虎</ACCOUNT_NAME>
<ACCOUNT_PROP>0</ACCOUNT_PROP>
<ID_TYPE>0</ID_TYPE>
<ID>320382111111086514</ID>
<TEL>187621116887</TEL>
<REMARK>单笔实时身份验证-备注字段</REMARK>
</FAGRA>
</AIPG>’;

openssl_pkcs12_read(file_get_contents(‘3.p12’), $certs, ‘111111’);
$signature = ”;
openssl_sign($xmldata, $signature, $certs[‘pkey’]);
$sign = bin2hex($signature);

java 源码:

Signature sign = Signature.getInstance(“SHA1withRSA”);
sign.initSign(prikey);
sign.update(msg.getBytes(encoding));
byte signed[] = sign.sign();
byte sign_asc[] = new byte[signed.length * 2];

Hex2Ascii(signed.length, signed, sign_asc);
signedStr = new String(sign_asc);

大佬有話說 (4)

  • 主 資深大佬 : unbeau

    求大神帮助 java 的签名是正确的

  • 資深大佬 : flamhaze5946

    你同一种语言测试两次也是不一样的

  • 資深大佬 : fiypig

    RSA 是不是要分段加解密啊?

  • 主 資深大佬 : unbeau

    已经解决了,是加密的字符创多了个空格。。。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具