0

我的 C# 程序中有一个加密部分,它使用 DES 加密进行加密。它只是加密“005”。我想要这部分,但使用 RSA 加密。我不知道如何使用 C# 代码。谁能帮助我

/*********************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******************************/
4

1 回答 1

0

这更像是一项密码学任务。

无论如何,您需要做的是将 DESCryptoServiceProvider 换成 RSACryptoServiceProvider。此外,由于 RSA 是 PKI 密码,而 DES 是对称分组密码,您需要创建适当的参数等。因此,如果这是您要实现的目标之一,那么实际的加密也将使用不同的密钥完成。

最后,所有必要的代码都可以在 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx找到

编辑

好的,根据我从您的回复中收集到的信息,您实际上并不想使用 RSA。只是任何其他密码,对吧?

在这种情况下,您可以选择什么,假设您想保留 .NET'System.Security.Crytography库作为您的源,您可以从 4 种对称加密(读取相同类型的)算法中进行选择。这些是:

它们都有非常相似的界面,所以只需选择其中一个(我的建议是选择 AES)并重新编写代码。它们具有相同的接口(如果我没有从快速浏览中错过某些东西),所以您真正需要做的就是用 AES 替换所有出现的 DES。就如此容易。

希望这可以帮助。

于 2012-04-23T13:20:01.007 回答