2013-10-24 76 views
0

電子簽名我有一組問題:驗證在.NET

  1. 什麼是一個.p7s文件包含哪些內容?我讀過它通常是發送到電子郵件的加密消息,但在我的情況下,我的硬盤上有一個文件和一個.p7s文件。該文件比.p7s大得多,所以我想知道它裏面的內容(當然還有如何使用它)。

2.這個問題的發生主要是因爲我沒有爲1的鼻子。 - 如果我有我的公鑰以字節數組的形式,我如何驗證C#簽名?我發現這個在互聯網上,但同樣,它使用從電子郵件得到了一些文字,我真的不知道發生了什麼事:

public static bool Verify(byte[] signature, string text) 
     { 
      X509Certificate2 certificate = new X509Certificate2(@"D:\My-CV.docx.p7s"); 

      if (signature == null) 
       throw new ArgumentNullException("signature"); 
      if (certificate == null) 
       throw new ArgumentNullException("certificate"); 

      //hash the text 
      // Methode 3 for Hashing 
      System.Security.Cryptography.SHA1 hash3 = System.Security.Cryptography.SHA1.Create(); 
      System.Text.UnicodeEncoding encoder = new System.Text.UnicodeEncoding(); 
      byte[] combined = encoder.GetBytes(text); 
      byte[] hash3byte = hash3.ComputeHash(combined); 

      //Adding the text from the email, to a contentInfo 
      ContentInfo content = new ContentInfo(hash3byte); 

      // decode the signature 
      SignedCms verifyCms = new SignedCms(content, true); 
      verifyCms.Decode(signature); 

      // verify it 
      try 
      { 
       verifyCms.CheckSignature(new X509Certificate2Collection(certificate), false); 
       return true; 
      } 
      catch (CryptographicException) 
      { 
       return false; 
      } 
     } 

有人可以幫助我?

回答

0

.p7s文件包含文檔的簽名。內容未加密,但看起來像。

文檔文件要大得多,因爲它包含日期,.p7s簽名。

要檢查簽名,您需要簽名文檔的公共部分。

您可以檢查這兩個職位,以檢查簽名:

的最後一件事是加載簽名數據,從P7S文件。 我做了一些搜索,然後回到你身邊。

+0

那麼我有證書的公共部分,但我怎樣才能使用它? .p7s文件有很多屬性,但哪一個是文檔簽名? –

+0

你能顯示這個文件內容嗎? –

+0

哪一個? .p7s文件?如果我能顯示它的內容,我不會問這個問題。 其他文件是一個普通的.docx文件。 –