PHP 生成签名方法为:openssl_sign($paramStr, $sign, $_privateKey,OPENSSL_ALGO_DSS1);
JAVA 验签的部分代码是:
Signature signet = Signature.getInstance("SHA1withDSA"); byte[] publicKeyCode = pubkey.getBytes(); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyCode); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PublicKey publicKey = keyFactory.generatePublic(keySpec); signet.initVerify(publicKey); signet.update(content.getBytes("utf-8")); // 公匙验证结果 boolean result = signet.verify(sign);
但是 JAVA 那边验签不通过。 PHP 的生成签名方法 openssl_sign 最后一个$signature_alg 变量试过 OPENSSL_ALGO_DSS1 和 DSA,都不行。
请问有人我遇到这种情况吗