2016-05-24 9 views
0

サーバ上のデータをphpで署名し、Javaデスクトップアプリケーションで署名されたデータを確認する必要があります。私の問題は、両方の言語が受け入れるキーを生成するのに成功しないということです。DSAアルゴリズム:Sign in PHP

私の最初の試みは、のJavaで鍵を生成することでしたが、that questionに示すように、キー。

$openssl dsaparam 512 </dev/random> dsaparam.pem 
$openssl gendsa dsaparam.pem -out dsa_priv.pem 
$openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem 

私は今、このコードで何かサインインしよう:

<?php 
$data = "test"; 

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

の検索結果を

は今、私はそのようにOpenSSLと鍵を生成しましたか?

openssl_sign(): supplied key param cannot be coerced into a private key in ... 

私は間違っていますか?誰も私が働いているDSA鍵を生成し、それに何か署名する手助けはできますか?

答えて

0

ここで重要なことが1つ欠落しています。 openssl_pkey_get_privateメソッドは、キーを文字列またはfile://プロトコルのファイルとして受け取ります。

$data = "test"; 

$pkeyid = openssl_pkey_get_private("file://dsa_priv.pem"); 
openssl_sign($data, $signature, $pkeyid); 
echo "\nSignature: " . base64_encode($signature) . "\n"; 

そして生成します:以下の例では、期待どおりに動作

Signature: MCwCFBpkSESngh+6ooMQZj7i+76t87QmAhQJTfyvvoZ4YFPd722R2qRnXD/Giw==

+0

を[OK]を、私はので、私は本当にしようとすることはできません、今一ヶ月のために残していますが、私はあなたがそれを試してみました推測しますそれは動作します。ありがとう! – Sharcoux

+0

@Sharcouxはい、私はそれを試して、それは動作します:) –

関連する問題