基於Rsa sha256的數字簽名與驗籤

2021-10-19 22:35:42 字數 2376 閱讀 1777

#移動mv ./openssl-1.1.0l.tar.gz /usr/local/

#解壓tar xzvf openssl-1.1.0l.tar.gz

#進入解壓目錄

cd /usr/local/openssl-1.1.0l

#輸入命令

./config

make

make install

#檢視版本,出現版本資訊就說明安裝正確

openssl version

注意: 如果沒有安裝 make gcc

apt-get install make

apt-get install gcc

如果出現錯誤

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: no such file or directory

請執行下面的命令,

ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1

ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

再次執行

openssl version

傳送方用sha256演算法對原檔案生成乙個簽名檔案,即32個位元組的hash碼。 然後用rsa加密演算法對此演算法加密

1.建立私鑰

openssl genrsa -out key.pri -f4 2048

2.匯出公鑰

openssl rsa –inform pem –outform pem –in key.pri –out key.pub –pubout

3.計算安裝包的資訊摘要

openssl dgst –sha256 –binary –out file1.sha256 安裝包檔案

#將原檔案的資訊摘要(hash值)儲存在檔案file1.sha256中。

4.用私鑰對資訊摘要進行非對稱加密演算法加密簽名

openssl rsautl -out file1.sig –sign –inkey key.pri –in file1.sha256

#產生簽名檔案file1.sig

傳送方將安裝包檔案、公鑰檔案和簽名檔案傳輸給接收方,接收方對加密的簽名解密,得到乙個32個位元組的hash碼。 對原檔案進行sha256簽名計算,得到32位元組的hash. 將這兩個hash碼比較,是否相等。 若相等, 即rsa_sha256數字簽名驗證通過。

原理: 不同檔案生成的hash值一定不同。

1.由簽名檔案計算資訊摘要

openssl rsautl –out file2.rec –inkey key.pub –in file1.sig –pubin –verify

#用公鑰解密收到的簽名檔案file1.sig的hash值,即原檔案的資訊摘要(hash值),將結果儲存到二進位制檔案file2.rec中。

2.計算接收到的檔案的資訊摘要

openssl dgst –sha256 –binary –out file2.sha256 接收到的檔案

#在接收方計算收到的檔案的hash值,即資訊摘要儲存到檔案file2.sha256中。

3.比較由簽名檔案計算資訊摘要file2.rec計算出的接收到的檔案的資訊摘要file2.sha256兩個檔案中32個位元組的內容是完全一致的,即資訊摘要是相同的,可以確認接收到的檔案是無篡改、可信的。

反之,則說明接收到的檔案有篡改或不可信的。

#檢視file2.rec檔案中的資訊摘要

od –v –an –t x1 file2.rec

#檢視file2.sha256的內容

Linux下基於openssl實現數字簽名

建立原檔案src.txt 也可以是任意型別的檔案 這裡僅作演示,輸入命令 echo this is a digital signature example.src.txta 建立私鑰 rsa加密演算法產生的2048位私鑰,並使用f4作為公鑰的e引數,將私鑰儲存在檔案key.pri中 openssl ...

php數字證書的簽名和驗籤

證書的簽名和驗籤經常用在和第三方對接介面的時候用到,用於身份校驗和防止資料被篡改。下面整理了乙個pfx格式的數字證書的簽名和cer格式的公鑰進行驗籤的過程。tips 需要php開啟openssl。簽名 public static function sign params,keypath,pwd el...

基於KNN的手寫數字識別

from numpy import import operator import os def classify0 inx,dataset,labels,k 構造分類器 knn原理 datasetsize dataset.shape 0 diffmat tile inx,datasetsize,1 ...