【发布时间】:2012-07-09 22:40:45
【问题描述】:
我想在 C# 中使用三重 DES 来加密/解密具有任意长度 (utf8) 密钥的 (utf8) 字符串。
我在找这三个函数
public static string Encrypt(string data, string key)
{
...
}
public static string Decrypt(string data, string key)
{
...
}
public static string GenerateKeyFromString(string str)
{
...
}
注意:在任何人链接到它之前,http://www.geekzilla.co.uk/view7B360BD8-A77C-4F1F-BCA0-ACD0F6795F61.htm 实现不起作用,我已经彻底测试了它。
我进行了大量搜索,发现了一些问题,例如 EncryptOneBlock 和其他问题,但我正在寻找一个完整的“傻瓜”实现,我认为这对其他人也有用。
提前致谢!
【问题讨论】:
-
你链接的那个有什么问题?只是它只处理 64 位密钥吗?不需要太多修改来解决这个问题。
-
您是在尝试自己实现算法(我希望是出于学习目的),还是只是如何使用
TripleDESCryptoServiceProvider之类的方法来实现? -
@DavidM 是的,我确实改变了它,但我发现
Decrypt()函数总是会抛出一个System.Security.Cryptography.CryptographicException。 -
@vcsjones 我更愿意自己实现它,但如果推荐的话,我会使用
TripleDESCryptoServiceProvider(如果这样可以节省时间)。 -
@James:如果你需要加密的东西,那么你应该(几乎)总是使用预先构建的经过验证的代码来为你做加密。您在编码中的一个错误可能意味着您实际上根本没有安全性。
标签: c# asp.net encryption cryptography