簡體   English   中英

PKCS#7 CMS - 消息摘要計算過程

[英]PKCS#7 CMS - Message digest calculation process

我正在研究 RFC 5652,以便確切了解如何編碼/解碼 PKCS#7 ASN.1 數據。

我不明白當存在“signedAttrs”字段時如何創建簽名:

消息摘要計算過程的結果取決於 signedAttrs 字段是否存在。 當該字段不存在時,結果只是如上所述的內容的消息摘要。 但是,當該字段存在時,結果是包含在 signedAttrs 字段中的 SignedAttrs 值的完整 DER 編碼的消息摘要。 由於 SignedAttrs 值(如果存在)必須包含 content-type 和 message-digest 屬性,因此這些值會間接包含在結果中。

通過閱讀上面的文字,我感到困惑: SignedAttrs 字段包含消息摘要和內容類型值,但消息摘要可以在計算后出現,並且必須計算摘要:

eContent OCTET STRING + SignedAttrs 字段的完整 DER 編碼(包含消息摘要字段)。

在下面的示例中,有一個 PKCS#7 已簽名數據結構,其中正在對信封數據內容字段值 + 已簽名屬性進行簽名。 messageDigest 值究竟來自哪里? 在此處輸入圖像描述

CMS 算法中有兩種不同的消息摘要:

  • 第一個消息摘要是一個簽名屬性,它只包含被簽名的封裝內容的摘要。

  • 第二個是通過簽名算法進行簽名 此消息摘要包含由特定算法計算的摘要:

    消息摘要算法的輸入是Content 在缺少簽名屬性的情況下,當前輸入的摘要(當前輸入 = 內容)將被創建並作為結果消息摘要返回。 否則,如果存在簽名屬性,則計算內容的摘要並將其添加到簽名屬性列表中(作為消息摘要簽名屬性),然后計算所有簽名屬性的摘要。 所以內容間接包含在結果中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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