在php中使用私钥作为字符串进行签名

时间:2016-05-23 22:24:39

标签: java php sign php-openssl

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

我可以使用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不回应任何东西,甚至是错误的,因为它应该是在失败的情况下......

0 个答案:

没有答案