PHP の openssl_sign メソッドを SHA512 (または他の SHA2 ファミリー メンバー) で動作させる機会はありますか?
キーの種類 (OPENSSL_KEYTYPE_RSA) として RSA を使用し、
openssl_sign($data, $signature, $privatekey, 'sha512');
すべてがうまく機能します。
ただし、OPENSSL_KEYTYPE_DSA を使用する場合、署名は空のままです。
OpenSSLのヘルプ ページで、「DSA アルゴリズムを使用してデータに署名または検証する場合は、dss1 ダイジェストを使用する必要があります。」という記述を見つけました。</p>
だから私はDSAでこれを試しました:
openssl_sign($data, $signature, $privatekey, 'dss1');
そしてそれはうまくいきました。
私のユースケースにより適したはるかに短い署名を作成するため、DSA を使用することをお勧めします。しかし、私の懸念は、DSS1 は基本的に SHA1 であり、もう使用されていないことです。これはDSAとの組み合わせでも有効ですか?この問題を回避し、SHA512 で DSA を使用する方法はありますか?