Преобразование шифрования DES в шифрование RSA

У меня есть часть шифрования в моей программе C#, которая зашифрована с помощью шифрования DES. Он просто шифрует «005». Я хочу эту часть, но с шифрованием RSA. Я не знаю, как использовать коды С#. Может ли кто-нибудь мне помочь

/*********************Message Encryption******************************/
string smsg = "005";
string venc;
DESCryptoServiceProvider iDESCryptoServiceProvider = new DESCryptoServiceProvider();
System.Text.Encoding iEncoding = new System.Text.UTF8Encoding();
byte[] vkey = iEncoding.GetBytes("12345678");
byte[] viv = { 1, 2, 3, 4, 5, 6, 7, 8 };
ICryptoTransform iICryptoTransform = iDESCryptoServiceProvider.CreateEncryptor(vkey, viv);
byte[] vmsg = iEncoding.GetBytes(smsg);
byte[] benc = iICryptoTransform.TransformFinalBlock(vmsg, 0, vmsg.Length);
venc = System.Convert.ToBase64String(benc);
/****************Message Encryption******************************/

person ghazaal    schedule 23.04.2012    source источник
comment
Это не имеет особого смысла. DES и RSA имеют совершенно разные цели. Вы используете RSA, если вам нужны его асимметричные свойства. Вы не используете его для шифрования с помощью общего ключа. Если вам нужна современная замена DES, используйте AES.   -  person CodesInChaos    schedule 23.04.2012
comment
Константа IV тоже бесполезна, и в вашей схеме отсутствует аутентификация.   -  person CodesInChaos    schedule 23.04.2012
comment
Может быть, вы захотите рассказать нам, чего вы хотите добиться с помощью шифрования, возможно, вы получите лучшие ответы.   -  person Maarten Bodewes    schedule 25.04.2012
comment
Большое спасибо... Но моя проблема в том, что я мало разбираюсь в шифровании, а я новичок. На самом деле я нашел готовую программу и хотел изменить ее, потому что я не хочу, чтобы она была скопировал один. Я изменил другие части программы, но в этой части, потому что я плохо знаю шифрование, я не мог его изменить. Я просто хочу изменить его! ИЗМЕНЕНИЕ моя единственная цель. И я просто хочу изменить его и зашифровать другим методом шифрования, кроме DES.   -  person ghazaal    schedule 26.04.2012
comment
@CodeInChaos, хотя то, что вы говорите, верно, RSA можно использовать для шифрования. Конечно, многие свойства значительно отличаются от симметричных шифров, но, тем не менее, вы получаете действительный зашифрованный текст.   -  person Trimack    schedule 26.04.2012


Ответы (1)


Это больше задача криптографии.

В любом случае, вам нужно поменять местами DESCryptoServiceProvider на RSACryptoServiceProvider. Кроме того, поскольку RSA — это шифр PKI, а DES — симметричный блочный шифр, вам потребуется создать соответствующие параметры и так далее. Таким образом, фактическое шифрование также будет выполняться с использованием разных ключей, если это было одной из ваших целей.

Наконец, весь необходимый код можно найти по адресу http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx

ИЗМЕНИТЬ

Итак, из того, что я понял из ваших ответов, вы на самом деле не хотите использовать RSA. Просто любой другой шифр, верно?

В этом случае, что вы можете выбрать, предполагая, что вы хотите сохранить библиотеку .NET 'System.Security.Crytography в качестве источника, вы можете выбрать один из 4 алгоритмов симметричного шифрования (читай того же типа). Это:

Все они имеют очень похожий интерфейс, поэтому просто выберите один из них (мой совет — выбрать AES) и переделайте свой код. У них идентичные интерфейсы (если я ничего не упустил из беглого просмотра), так что все, что вам действительно нужно сделать, это заменить все вхождения DES на AES. Так просто, как, что.

Надеюсь это поможет.

person Trimack    schedule 23.04.2012
comment
Большое спасибо... Но моя проблема в том, что я мало разбираюсь в шифровании, а я новичок. На самом деле я нашел готовую программу и хотел изменить ее, потому что я не хочу, чтобы она была скопировал один. Я изменил другие части программы, но в этой части, потому что я плохо знаю шифрование, я не мог его изменить. Я просто хочу изменить его! ИЗМЕНЕНИЕ моя единственная цель. И я просто хочу изменить его и зашифровать другим методом шифрования, кроме DES. - person ghazaal; 26.04.2012
comment
На самом деле я тоже проверил сайт Microsoft. Но когда я использую этот метод, моя программа столкнется с множеством ошибок, и, поскольку я плохо знаю шифрование, я не могу исправить эти ошибки. - person ghazaal; 26.04.2012
comment
Большое спасибо... да, вы правы, я просто хочу использовать любой другой шифр, кроме DES. Спасибо за руководство. Я заменил их на AES, но это не сработало, потому что я думаю, что между ними есть некоторые различия, и для AES мы должны использовать использование перед AesCryptoServiceProvider, и в программе были некоторые ошибки. Я использовал TripleDES, ошибок не было, но программа не работала - person ghazaal; 28.04.2012
comment
Извините, можно еще вопрос? Я хотел бы знать преимущества Triple DES по сравнению с DES. Есть ли какие-либо преимущества? - person ghazaal; 15.05.2012
comment
Ну, в основном, это немного лучше, чем DES в отношении атаки грубой силы. Это зависит в основном от параметров ключа. См. http://en.wikipedia.org/wiki/Triple_DES для простого обзора. - person Trimack; 15.05.2012