簡體   English   中英

沒有ASN.1編碼的Python中的數字簽名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM