[英]Digital Signature in Python Without ASN.1 Encoding?
我們需要生成不帶 ASN.1編碼的數字簽名,以供下游應用程序進行驗證。 我們可以通過在命令行上使用openssl來做到這一點:
openssl pkeyutl -sign -inkey keyfile < hash
但是,當我嘗試使用Python(使用PyCrypto庫)進行數字簽名時,如果沒有包含ASN.1編碼的庫,我將無法這樣做(也就是說,除非我派生PyCrypto允許我刪除它們)。 rsa庫也不允許這樣做。 我是否錯過了允許這種靈活性的Python加密庫或命令?
根據此答案 ,您顯示的OpenSSL命令將生成一個RSASSA-PKCS1-v1_5
簽名,根據定義,該簽名始終包含ASN.1 DER編碼的結構:您的假設實際上無效。
但是,在哈希算法固定的情況下,接收器無需實現完整的DER解析器,也無需這樣做。 它可以只檢查是否存在某個字節字符串(以及其他填充字節,並在最右邊的位置檢查摘要之前)。 這個其他答案顯示了最流行的摘要算法的DER編碼。
如果您確實不想在簽名中包含ASN.1,則只能切換到RSASSA-PSS
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.