Unix crypt() 的 C# 实现






4.69/5 (12投票s)
2004年12月30日
2分钟阅读

119038

2863
C# 版本的 Unix crypt() 算法。
引言
在我的公司,我们目前正在对一些核心系统进行重大改造。战略决策是放弃我们的大部分 Unix 机器,转向更以微软为导向的平台。这个决策导致的变化之一是使用微软配置系统,因此我们多年来制作的用于帮助我们运营业务的所有脚本都必须转换为 MPF(微软配置框架)可用的格式。我们正在分几个步骤更改系统,因此在某个时候,我们将拥有一个基于 MPS 的前端,与 Unix 后端通信。届时,MPS 将创建新的用户帐户,但由于几乎没有服务器和应用程序使用这些用户帐户的数据已被转换,因此我们需要能够向它们提供它们期望的信息。在这种情况下,一些应用程序期望用户帐户包含使用 Unix crypt()
系统调用的密码加密。感谢开源的美妙之处,该系统调用的源代码广泛可用,我很快就能找到一些可以使用的源代码并将其移植到 C#(我们正在使用 C# 来创建自定义 MPF 提供程序)。
使用代码
使用这段代码非常简单。可以将类放在您自己的应用程序中,也可以放在类库中。有两个调用
string Crypt(string textToEncrypt);
和
string Crypt(string encryptionSalt, string textToEncrypt);
两者都是 static
成员。如果您使用第一种方法,它将为您随机生成 salt 字符,然后调用第二种方法。在这种情况下,salt 是两个字母,用于提供额外的随机性进行加密,并允许您重复任何先前的加密(如果您也拥有加密的文本)。
用户还应该知道的一件事是,要加密的文本不应超过 8 个字符。如果您的文本长度超过 8 个字符,则仅使用前 8 个字符,其余的将被忽略。