4

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

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

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

4

2 回答 2

4

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

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

于 2019-08-13T20:17:06.620 回答
2

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

因为这发生在轮中,除非盐值为零(意味着没有发生排列),所以不可能使用框架加密。

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

于 2013-05-07T12:30:06.037 回答