証明書と秘密鍵を使用して、署名および暗号化された電子メールを復号化しようとしています。これは、暗号化された電子メールで完全に機能します。電子メールが署名および暗号化されている場合、添付ファイル データの先頭と末尾に余分な文字が追加されます。たとえば、余分な文字は?/?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
上記の文字列では、/
文字は実際には正方形です。このエディタはそれをスラッシュに変更しました。