2

証明書と秘密鍵を使用して、署名および暗号化された電子メールを復号化しようとしています。これは、暗号化された電子メールで完全に機能します。電子メールが署名および暗号化されている場合、添付ファイル データの先頭と末尾に余分な文字が追加されます。たとえば、余分な文字は?/?zHlTVqQAAMAAAAEAAAA//8AALgAAA...どこにありますか。?/?z正確な文字は、添付ファイルの種類とサイズによって異なります。これらの文字を探して取り除くことはできますが、考えられるすべての組み合わせを知る必要があります。

これらの文字を削除する簡単な方法を知っている人はいますか? 電子メールを復号化するために使用しているコードはsInput次のとおりです。電子メールの生の暗号化文字列は次のとおりです。

Dim EncryptCert As New X509Certificate2(sCERTIFICATE, sCERTIFICATE_PASS)

data = Convert.FromBase64String(sInput)

Dim envData As New EnvelopedCms(New ContentInfo(data))
Dim Recipient As New CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, EncryptCert)
Dim col As New X509Certificate2Collection(EncryptCert)

envData.Decode(data)
envData.Decrypt(col)

Dim decData As Byte() = envData.ContentInfo.Content
message = Encoding.ASCII.GetString(decData)

繰り返しますが、電子メールが署名されていない限り、これはうまく機能します。電子メールが署名されると、これらの余分な文字が添付データに追加され、それらが削除されるまで base64 データを正しくデコードできません。

ちなみに、?/?z上記の文字列では、/文字は実際には正方形です。このエディタはそれをスラッシュに変更しました。

4

0 に答える 0