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