2012-04-23 3 views
0

У меня есть часть Encyption в моей программе на C#, которая зашифровывается с помощью шифрования DES. Он просто шифрует «005». Я хочу эту роль, но с RSA encryption.I не знаю, как использовать C# codes.Can кто-нибудь помочь мнеПреобразование шифрования DES в 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******************************/ 
+1

Это не имеет большого смысла. DES и RSA имеют совершенно разные цели. Вы используете RSA, если вам нужны его асимметричные свойства. Вы не используете его для шифрования с помощью общего ключа. Если вам нужна современная замена DES, используйте AES. – CodesInChaos

+0

Постоянный 'IV' тоже бесполезен, и вашей схеме не хватает аутентификации. – CodesInChaos

+0

Возможно, вы захотите сказать нам, чего вы хотите добиться путем шифрования, вы можете получить более качественные ответы. –

ответ

0

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

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

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

EDIT

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

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

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

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

+0

Большое спасибо ... Но моя проблема в том, что я мало что знаю о шифровании, и я новичок. В общем, я нашел готовую программу, и я хотел ее изменить, потому что я не хочу, чтобы она быть скопированным. Я изменил другие части программы, но об этой части, потому что я не знаю шифрования, я не мог ее изменить. Я просто хочу изменить его! ИЗМЕНЕНИЕ - моя единственная цель.И я просто хочу изменить его и зашифровать с помощью другого метода шифрования, кроме DES – ghazaal

+0

На самом деле я также проверил сайт Microsoft. Но когда я использую его метод, моя программа столкнется с множеством ошибок и потому, что я не знаю шифрования, я не могу исправить эти ошибки. – ghazaal

+0

Большое спасибо ... да. Вы правы. Я просто хочу использовать любые другие шифр, кроме DES. Спасибо за вашего гида. Я заменил их AES, но это не сработало, потому что я думаю, что есть некоторые различия между ними, и для AES мы должны использовать «использование» перед «AesCryptoServiceProvider», и в программе были некоторые ошибки. Я использовал TripleDES, у него не было никаких ошибок, но программа не работала – ghazaal

Смежные вопросы