Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
VArtem
0 / 0 / 0
Регистрация: 21.09.2010
Сообщений: 7
1

PGP создание аналога spgpencode в BouncyCastle на C#

02.06.2011, 18:15. Просмотров 943. Ответов 0
Метки нет (Все метки)

Здравствуйте,

Столкнулся с такой проблемой: я должен отправить шифрованные данные в PGP при помощи C#. Ранее программа работала на дельфи и криптовала данные при помощи функции spgp_Encode из библиотеки PGP SDK .

В C# с PGP работает сторонняя библиотека Bouncy Castle. Пробую сначала подписать данные при помощью моего закрытоко ключа, а потом зашифровать их при помощи открытого ключа получателя. Получатель такую байду не принимает и ругается на подпись.

Привожу код на C#

Будем считать что мой приватный ключ уже находится в MyPrivateKey, а публичный ключ получателя в ReceiverPublicKey

HashAlgorithmTag digest = HashAlgorithmTag.MD5;

PgpV3SignatureGenerator sGen = new PgpV3SignatureGenerator(MyPublicKey.Algorithm, digest);
sGen.InitSign(PgpSignature.CanonicalTextDocument, pgpPrivKey);

string str="sekretnaia stroka";
byte[] byteStr = Encoding.ASCII.GetBytes(str);

// непосредственно подписание
sGen.Update(byteStr);

byte[] signdata1 = sGen.Generate().GetEncoded();
byte[] encdata1 = Encrypt(byteStr, BankKey);


Данные из encdata1 уже передаются получателю по сети.

Функция Encrypt:

private static byte[] Encrypt(byte[] clearData, PgpPublicKey encKey)
{
bool armor = true;
string fileName = PgpLiteralData.Console;

MemoryStream bOut = new MemoryStream();

PgpCompressedDataGenerator comData = new PgpCompressedDataGenerator(CompressionAlgorithmTag.Uncompressed);
Stream cos = comData.Open(bOut); // open it with the final destination
PgpLiteralDataGenerator lData = new PgpLiteralDataGenerator();

Stream pOut = lData.Open(

cos, // the compressed output stream
PgpLiteralData.Utf8, //Binary
fileName, // "filename" to store
clearData.Length, // length of clear data
DateTime.UtcNow // current time

);



pOut.Write(clearData, 0, clearData.Length);

lData.Close();
comData.Close();

PgpEncryptedDataGenerator cPk = new PgpEncryptedDataGenerator(SymmetricKeyAlgorithmTag.Idea);

cPk.AddMethod(encKey);
byte[] bytes = bOut.ToArray();

MemoryStream encOut = new MemoryStream();
Stream os = encOut;

if (armor)
{
os = new ArmoredOutputStream(os);
}



Stream cOut = cPk.Open(os, bytes.Length);
cOut.Write(bytes, 0, bytes.Length); // get bytes from compressed stream
cOut.Close();



if (armor)
{
os.Close();
}
encOut.Close();

return encOut.ToArray();
}


Буду очень признателен за любую помощь
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2011, 18:15
Ответы с готовыми решениями:

Создание своего аналога bool
Доброго времени суток! Подскажите, как можно (и можно ли вообще) создать свой...

Создание аналога командной строки для работы с интернет
Добрый день! Я сегодня задался одной весьма нестандартной (для меня) задачей. ...

Системa PGP. По схеме, которая предлагается сервисами аутентификации и конфиденциальности системы PGP, передать от абонента А к абоненту В две буквы с
Системa PGP. По схеме, которая предлагается сервисами аутентификации и...

Создание аналога Listbox
Задача заключается в том, чтобы на сайте был listbox (<select>, <options>) в...

Создание аналога ютуба
Здравствуйте форумчане! Заранее прошу прощения за то, что категорию форума...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2011, 18:15

Создание аналога структуры С++
Доброго дня всем! Недавно занялся переписыванием на Python программы,...

Создание аналога Everest/AIDA64
Уважаемые. Вот какой вопрос. Необходимо написать программу на подобии everest...

Создание аналога сводной таблицы
есть ексель 2007. нужно создать аналог сводной таблицы, но именно сводная не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru