ホームページ  >  記事  >  バックエンド開発  >  openssl が DSA アルゴリズムを使用して署名を生成する方法の詳細な説明_PHP チュートリアル

openssl が DSA アルゴリズムを使用して署名を生成する方法の詳細な説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:48:071145ブラウズ

この記事では、DSA アルゴリズムを使用して openssl に基づいて署名を生成する例を紹介します。署名を生成する方法は非常に簡単ですが、より複雑な中間の原理を理解する必要があります。

コマンド:

openssl> dgst -dss1 -sign C.pri -out signal.bin s.txt

説明
C.pri は、DSA アルゴリズムによって生成された秘密鍵ファイルです
s.txtは署名作成用の原文です
Signature.bin は生成された署名ファイルです

以下のメソッドを使用して、phpで署名の内容を表示できます

コードは次のとおりです コードをコピー
echo bin2hex(file_get_contents('signature.bin'));
?>

参考内容
メッセージダイジェストアルゴリズム
サポートされているアルゴリズムには、MD2、MD4、MD5、MDC2、SHA1 (DSS1 とも呼ばれます)、RIPEMD-160 が含まれます。 SHA1 と RIPEMD-160 は 160 ビット ハッシュを生成し、その他は 128 ビット ハッシュを生成します。互換性上の理由がない限り、SHA1 または RIPEMD-160 を使用することをお勧めします。
rmd160 コマンドを必要とする RIPEMD-160 を除いて、他のアルゴリズムは dgst コマンドで実行できます。
OpenSSL の SHA1 の処理は少し奇妙で、DSS1 と呼ばれる必要がある場合があります。
メッセージ ダイジェスト アルゴリズムは、ハッシュ値の計算に加えて、署名と署名の検証にも使用できます。署名する場合、DSA によって生成された秘密キーは DSS1 (つまり SHA1) と一致する必要があります。 RSA によって生成された秘密キーには、任意のメッセージ ダイジェスト アルゴリズムを使用できます。

# メッセージダイジェストアルゴリズムの応用例
# SHA1アルゴリズムを使用してファイルfile.txtのハッシュ値を計算し、stdoutに出力します
$ openssl dgst -sha1 file.txt
# SHA1アルゴリズムを使用してファイルfile.txtのハッシュ値を計算し、ファイルdigest.txtに出力します
$ openssl sha1 -out ダイジェスト.txt ファイル.txt
# DSS1 (SHA1) アルゴリズムを使用してファイル file.txt に署名し、ファイル dsasign.bin に出力します
# 署名の秘密キーは DSA アルゴリズムによって生成され、ファイル dsakey.pem に保存される必要があります
$ openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt
# dss1 アルゴリズムを使用して、file.txt のデジタル署名 dsasign.bin を検証します。
# 検証される秘密鍵は、DSA アルゴリズムによって生成されたファイル dsakey.pem です
$ openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt
# sha1 アルゴリズムを使用してファイル file.txt に署名し、ファイル rsasign.bin に出力します
# 署名の秘密鍵は、RSA アルゴリズムによって生成されたファイル rsaprivate.pem です
$ openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt
# sha1 アルゴリズムを使用して file.txt rsasign.bin のデジタル署名を検証します、
# 検証された公開鍵は、RSA アルゴリズムによって生成された rsapublic.pem です
$ openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632818.html技術記事この記事では、DSA アルゴリズムを使用して openssl に基づいて署名を生成する例を紹介します。署名を生成する方法は非常に簡単ですが、より複雑な中間の原理を理解する必要があります。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。