1

我有一个存储为字符串(硬编码)的私钥,我需要用该密钥签署一个字符串。

我可以使用 openssl,但我没有在文档中找到如何使用我的私钥。我只看到如何使用 pem 文件或与证书相关的东西,而我的过程与证书或类似的东西无关。

私钥来自 Java 桌面应用程序,由KeyPairGenerator类生成

        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
        keyGen.initialize(512, random);
        KeyPair pair = keyGen.generateKeyPair();
        PrivateKey pri = pair.getPrivate();
        String base64Key = new Base64().encode(pri.getEncoded());

有人对此有提示吗?

谢谢 !

编辑:以其中一个私钥为例:

"MIHGAgEAMIGoBgcqhkjOOAQBMIGcAkEA/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B
81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuFwIVAJYu3cw2nLqOuyYO5rahJtk0bjjFAkBn
hHGyepz0TukaScUUfbGpqvJE8FpDTWSGkx0tFCcbnjUDC3H9c9oXkGmzLik1Yw4cIGI1TQ2iCmxB
blC+eUykBBYCFFVbS2ccW7j+SMOiro2PzB1FG/TL"

它是密钥的 Base64 表示。

我当前的代码将密钥保存在名为 pem 的文件中:

$pkeyid = openssl_pkey_get_private("key.pem");
echo openssl_sign($data, $signature, $pkeyid);
echo "<br/>";
echo $signature;

但是 openssl_sign 没有回显任何东西,甚至是错误的,因为它应该在失败的情况下......

4

0 回答 0