我有一个存储为字符串(硬编码)的私钥,我需要用该密钥签署一个字符串。
我可以使用 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 没有回显任何东西,甚至是错误的,因为它应该在失败的情况下......