什麼是數字簽名
所謂數字簽名(digital signature)(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,
但是使用了公鑰加密領域的技術實現,用於鑑別數字資訊的方法。一套數字簽名通常定義兩種互補的運算,乙個用
於簽名,另乙個用於驗證。
數字簽名的實現
數字簽名的簡單例項是直接利用rsa演算法和傳送方的秘密金鑰。對被簽名的資料進行加密。當接收方收取本塊
密文時,使用傳送方的公開金鑰進行解密,如果能夠還原明文,則根據公開金鑰體制的特點(公開金鑰加密的密文
只能用秘密金鑰解密,秘密金鑰加密的密文只能用公開金鑰解密),可以認為該資料確實來自於希望的傳送方。
介面測試中的數字簽名
在使用http/soap協議傳輸時,簽名作為其中乙個引數,起到鑑權的作用(客戶端的密匙和服務端的密匙匹配)
以及資料防篡改(引數是明文傳輸,將介面引數及密匙生成加密字串,將加密字串作為簽名),因為對整個接
口的引數進行了加密,因此任何乙個引數發生變化那麼簽名驗證及失敗。
弊端:md5加密不可逆,伺服器端必須知道客戶端的介面引數和值,否則簽名驗證便會失敗,一般介面在設計時
客戶端請求引數並不完全已知,那麼就不能用全參加密。
在介面開發過程中,一般通過時間戳+sign作為密匙加密傳輸。
這種情況測試介面時,通過獲取時間戳和拿到sign密匙後,再拼接成乙個字串,再加密這個字串,然後和參
數一起傳輸。
md5時間戳和sign的例子:
import hashlib # md5加密
import time
sign_key =
'asd123'
# key 作為金鑰
now_time = time.time(
)# 獲取當前時間 這裡獲取的是從2023年1月1日0時0分0秒到現在度過的秒
c_time =
str(now_time)
.split(
'.')[0
]# 獲取.之前的時間戳
sign = c_time + sign_key # 拼接成乙個字串
md5 = hashlib.md5(
)sign_bytes_uft8 = sign.encode(encoding=
'utf-8'
)#進行utf-8編碼
md5.update(sign_bytes_uft8)
sign_md5 = md5.hexdigest(
)#md5加密
print
(sign_md5)
當前時間戳+key加密後,就可以作為引數直接傳輸了 數字簽名簽名概述
數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...
數字信封 數字簽名
2019 08 06 19 51 51 數字簽名是用來表明資料傳送者身份的,有了簽名就說明這個資料是傳送都發出來的。為什麼?因為可以用你的公鑰開啟你的簽名資訊,獲取明文的hash值。數字信封,被公鑰加密後的對稱密碼被稱為數字信封,用於對稱金鑰的交換。數字證書,用來證明資料傳送者的身份的。為什麼能證明...
數字簽名技術
在當今高速發展的網路資訊化時代,人們越來越重視資訊的安全性問題,電子資訊內容的安全已經成為倍受關注的問題,數字簽名技術作為資訊保安領域的一項重要技術,應用日益廣泛。論述了數字簽名的作用及實現方法技術,並介紹了當前數字簽名的幾種新技術,展望了這一領域的發展前景。1數字簽名的作用 該技術在具體工作時,首...