C#使用System.Security.Cryptography实现Unix crypt

时间:2013-03-19 12:39:08

标签: c# .net security cryptography des

忽略DES提供的弱安全性,我正在寻找Unix crypt()函数的C#实现,它使用.net框架的Cryptography命名空间中的类/方法。

我发现了这个: http://www.codeproject.com/Articles/9183/A-C-implementation-of-Unix-crypt

但我想知道使用DESCryptoServiceProvider等是否有更短的解决方案

2 个答案:

答案 0 :(得分:3)

您提到的Unix crypt的实现相当慢。

Here是用C#编写的crypt(3)的独立轻量级且相当有效的实现,它利用Span<T>类型来保存和转换数据。

答案 1 :(得分:2)

传统和扩展DES crypt salting都会置换expansion function的结果。对于我在salt中设置的每一位,它们交换扩展函数结果的第i和第i + 24位。

因为这发生在中间,除非盐为零(意味着没有发生排列),否则不可能使用框架密码术。

但是,重新实现DES不会超过一千字节或两千字节。我的CryptSharp库实现了传统和扩展的DES,MD5,SHA256,SHA512和bcrypt算法。对于MD5和两种SHA crypt方法(方法$ 1 $,$ 5 $和$ 6 $),它使用框架加密。如果您不必使用DES crypt方法,请查看ShaCrypter.cs - 它相当短。