【问题标题】:C# Implementation of Unix crypt using System.Security.Cryptography使用 System.Security.Cryptography 实现 Unix crypt 的 C#
【发布时间】:2013-03-19 12:39:08
【问题描述】:

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

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

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

【问题讨论】:

  • 可能 .Net 框架开发人员无法让自己实现如此不安全的东西 :-)

标签: c# .net security cryptography des


【解决方案1】:

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

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

【讨论】:

    【解决方案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 - 它相当短。

    【讨论】:

    • CryptSharp 做得很好。我只是希望它快一点。我想这就是 .net 框架的作用。我在同一台机器上运行 jtr(开膛手约翰),性能要高得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2018-02-06
    • 2011-01-15
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多