Расшифровка зашифрованных данных PKCS # 7 в C # - PullRequest
4 голосов
/ 01 октября 2009

Я работаю над решением, которое должно расшифровать зашифрованные данные PKCS # 7, предпочтительно на C #. Насколько я вижу, API .NET поддерживает это через пространство имен System.Security.Cryptography.Pkcs. Однако кажется, что реализация может работать только на байтовых массивах. Так что мне делать, если у меня большой зашифрованный файл, который не помещается в память?

Я что-то здесь упускаю или есть другой способ сделать это на уровне потока вместо использования bytearrays?

Ответы [ 4 ]

5 голосов
/ 01 октября 2009

.NET Framework имеет только элементарную поддержку PKCS # 7 / CMS, поэтому он не поддерживает потоковую передачу данных.

Вам нужна сторонняя библиотека. Как уже упоминалось, BouncyCastle - отличный выбор. Он поддерживает PKCS # 7 (PKCS # 7 также известен как CMS).

Их тесты, вероятно, являются хорошим местом для поиска примера кода: EnvelopedDataStreamTest.cs .

1 голос
/ 08 марта 2010

.Net Framework из 2.0 предоставил пространство имен pkcs, которое помогает нам делать sign / encrypt / decrypt в стандарте pkcs # 7. Пожалуйста, обратитесь сюда для обзора http://msdn.microsoft.com/en-us/library/bb885086.aspx и здесь для хорошего примера http: ** msdn.microsoft.com/en-us/library/bb924565.aspx.

1 голос
/ 01 октября 2009

Я нашел пример того, как расшифровать PKCS # 7 в C #. Этого может быть достаточно, чтобы вы начали.

0 голосов
/ 01 октября 2009

У вас есть возможность перейти на использование BouncyCastle API, с http://www.bouncycastle.org/csharp/,, поскольку он использует потоки для расшифровки.

Но я не верю, что он может использовать зашифрованные данные PKCS # 7, поэтому вам придется использовать BouncyCastle и для шифрования.

Вот пример использования этого API: http://elian.co.uk/post/2009/07/29/Bouncy-Castle-CSharp.aspx

Если вы хотите использовать .NET, это может быть полезно: http://www.geekpedia.com/tutorial227_Encrypting-and-Decrypting-Files-with-Csharp.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...