1. 程式人生 > >OpenSSL 命令詳解(二)——摘要演算法、簽名、驗籤

OpenSSL 命令詳解(二)——摘要演算法、簽名、驗籤

鋒影

email:[email protected]

如果你認為本系列文章對你有所幫助,請大家有錢的捧個錢場,點選此處贊助,贊助額0.1元起步,多少隨意

這裡寫圖片描述

用什麼摘要演算法指令代替時,預設使用該演算法,但也可以指定其他演算法。

這裡寫圖片描述

使用指令 openssl dgst - 
dgst指令 可以用其他摘要演算法指令(如md4\md5\sha1…)代替,含義一樣 
這裡寫圖片描述

計算摘要值

未指定特定摘要演算法時,預設使用md5演算法。 
用法:

openssl dgst [-演算法名稱] [-其他選項] inputfile

這裡寫圖片描述

支援的摘要演算法:

-md5:預設選項,用md5演算法進行摘要。

-md4:用md4演算法進行摘要。

-mdc2:用mdc2演算法進行摘要。

-sha1:用sha1演算法進行摘要。

-sha:用sha演算法進行摘要。

-sha224:用sha演算法進行摘要。

-ripemd160:用ripemd160演算法進行摘要。

-dss1:用dss1演算法進行摘要。

-dss1:用whirlpool演算法進行摘要。

這裡寫圖片描述

其他選項含義

-out file:輸出到指定檔案

-c:打印出兩個雜湊結果的時候用冒號來分隔開。僅僅設定了[-hex]的時候有效。

-r:用coreutils格式來輸出摘要值。

-rand file:產生隨機數種子的檔案(沒發現產生實際效果)

-d:打印出BIO除錯資訊值。

-hex:顯示ASCII編碼的十六進位制摘要結果,預設選項。

-binary:以二進位制的形式來顯示摘要結果值。

這裡寫圖片描述

簽名驗籤

簽名的一般過程:先對資料進行摘要計算,然後對摘要值用私鑰進行簽名。

RSA金鑰簽名驗籤

1.這裡演示以RSA私鑰簽名為例。因此先生成RSA金鑰對。

openssl genrsa -out rsa_private.key 
(省略引數設定,使用預設值,模數:1024) 
這裡寫圖片描述

由公鑰匯出私鑰。 
openssl rsa -in rsa_private.key -pubout -out rsa_public.key 
這裡寫圖片描述

2.簽名

用RSA私鑰對SHA1計算得到的摘要值簽名。

openssl dgst -sign rsa_private.key -sha1 -out sha1_rsa_file.sign file.txt

這裡寫圖片描述

3.驗籤

用相應的公鑰和相同的摘要演算法進行驗籤,否則會失敗。

openssl dgst -verify rsa_public.key -sha1 -signature sha1_rsa_file.sign file.txt

這裡寫圖片描述

也可以使用相同的私鑰和相同的摘要演算法進行驗證。 
這裡寫圖片描述

DSA金鑰對簽名驗籤

1.生成DSA引數

openssl dsaparam -out dsa.param 1024

2.由DSA引數產生DSA私鑰

openssl gendsa -out dsa_private.key dsa.param

3.由DSA私鑰生成DSA公鑰

openssl dsa -in dsa_private.key -out dsa_public.key -pubout

這裡寫圖片描述

4.用DSA私鑰對SHA384計算的摘要值進行簽名。

openssl dgst -sign dsa_private.key -sha384 -out sha384_dsa.sign file.txt

DSA簽名對於某些摘要演算法不匹配,詳見下圖。

這裡寫圖片描述

5.用相應的公鑰和摘要演算法進行驗籤

openssl dgst -verify dsa_public.key -sha384 -signature sha384_dsa.sign file.txt

6.用相同的私鑰和摘要演算法驗籤

openssl dgst -prverify dsa_private.key -sha384 -signature sha384_dsa.sign file.txt

這裡寫圖片描述

DSA在每次簽名時,使用了隨機數k,如果對同一訊息進行多次簽名,簽名結果是不同的,所以DSA是一種隨機式數字簽名。 
這裡寫圖片描述

HMAC

HMAC是金鑰相關的雜湊運算訊息認證碼,HMAC運算利用雜湊演算法,以一個金鑰和一個訊息為輸入,生成一個訊息摘要作為輸出。

openssl dgst -md5 -hmac "asfdsdfsg" file.txt

這裡寫圖片描述