5-8 訊息摘要操作
內容:
訊息摘要演算法(或稱雜湊演算法)是將輸入訊息轉換成一份不可逆的訊息摘要(或稱雜湊值)。訊息摘要與原來訊息之間的相依性非常的高,原訊息只要稍微修改一點點,所產生的訊息摘要會變化很大。另一方面,很難找出兩份不同的訊息,可以計算出相同的訊息摘要,因此有稱為『數位指紋』。原訊息的長度可以任意大小,但產生訊息摘要的長度是固定的。訊息摘要演算法再配合公開鑰匙系統,則可作為訊息的數位簽章與驗證。
首先觀察 OpenSSL 提供有哪些訊息摘要演算法,如下:
H:\SecureLab\study>openssl/?
….
Message Digest commands (see the `dgst' command for more details)
md2 md4 md5 rmd160 sha
sha1
…… |
上述命令不僅包含訊息摘要功能,也具有公開鑰匙系統的數位簽章與驗證功能。
5-8-1 命令格式 - dgst
執行訊息摘要命令有兩種格式,一者配合 dgst 命令(即是 dgst md2 …);另一者僅輸入演算法命令(即是 md2 …),兩種方法皆可。吾人用 hash 表示各種演算法名稱,則命令格式如下:
openssl dgst [-hash ] [-c] [-d] [-hex] [-binary] [-out filename] [-sign filename]
[-passin arg] [-verify filename] [-prverify filename] [-signature filename] [file…] |
-
-hash:演算法名稱,可以是 –md2、-md4、-md5、-rmd160、-sha 或 –sha1。
-
-c、-d、-hex、-binary:訊息摘要輸出格式,可以是字元(c)、BIO 訊息(d)、十六進位碼(hex)或二進位碼(binary)等格式。
-
-sign filename:該檔案(filename)儲存預定簽署文件的私有鑰匙。該鑰匙可能是 RSA 或 DSA 私有鑰匙,則相對應採用鑰匙的演算法處理。
-
-verify filename:該檔案(filename)存放預定驗證已簽署文件的公開鑰匙。驗證結果會顯示:"Verification OK" 或 "Verification Failure"。
-
-prverify filename:該檔案(filename)存放預定驗證已簽署文件的『私有鑰匙』。
-
-signature filename:該檔案儲存簽署文件後的簽署碼,提供可驗證功能。
-
file …:預定進行雜湊演算處理的訊息檔案,可提供一個檔案以上連結計算,但僅產生一個訊息摘要。多個檔案之間以『,』(Linux)或『;』(Windows)分隔。
5-8-2 操作範例
操作範例:吾人利用 md2 將 data.txt 檔案內資料編碼成訊息摘要,並由螢幕顯示出來,操作如下:
H:\SecureLab\study>type data.txt
012345678901234567890123456789
H:\SecureLab\study>openssl dgst -md2 data.txt
MD2(data.txt)= 358f9627407024c72c0512da058e4472 |
操作範例:吾人利用 sha1 將 data.txt 檔案內資料編碼成訊息摘要,並儲存於 data_md.txt 檔案,操作如下:
H:\SecureLab\study>openssl sha1 -out data_md.txt data.txt
H:\SecureLab\study>type data_md.txt
SHA1(data.txt)= 3b67544bfd2d6732fad2aabac32e692b1ae9de13 |
|