好吧,我已经为此努力了两天。我需要使用openssl库在c语言中进行编码,等效于以下java代码:
byte[] result = null;
Signature st = Signature.getInstance(BC_PROV_ALGORITHM_SHA256RSA, "BC");
st.initSign(privateKey);
st.update(data);
result = st.sign();
return result;
最明显的方法是
RSA_sign( NID_sha256, ( const BYTE* ) pszMessage256Hash,
strlen( pszMessage256Hash), ( unsigned char *) pSignature,
&iSignLen, pPrivateMerchantKey )
已经检查了密钥是否相同,并且pszMessage256Hash的内容与Java中的“ data”变量相同。由于填充的原因,每次的结果都不同,但是服务器端验证拒绝了第二个签名。
如我所说,任何帮助将不胜感激,我在此上浪费了太多时间。