1

我正在为 iRedMail 服务器制作一个扩展,我想使用 C# 代码添加新用户。IrerdMail 将用户保存在 MySQL 数据库中,用户的密码使用 openssl (MD5) 加密。当我查看用于创建用户的 iRedMail api 时,bash 脚本中有一行代码:

openssl passwd -1 passwordToBeEncrpted

终端内的该命令返回我的 MD5 字符串,如果我将该字符串复制到我的应用程序并针对托管在邮件服务器上创建的用户上的 MySQL 表执行插入命令,则可以正常工作。
从用户密码生成 MD5 以便我可以将其插入 MySQL 数据库的正确方法是什么?
我的应用程序在 iRedMAil 旁边的其他服务器上运行,是否必须在同一台机器上创建 MD5?我正在考虑从 C# 代码调用 SSH 命令,是否有免费的 .NET 库可以重用来自 SSH 的输出字符串作为变量?
这可以使用像 MSSQL 服务器中的 UDF 之类的东西来完成吗?我知道我如何从 MSSQL 云调用命令应用程序在 MySQL - CentoOS 组合中执行类似的操作。

4

2 回答 2

1

只是一个想法:与其尝试调用 openssl (用户必须安装,或者您必须在安装过程中包含)所有相关的麻烦,不如只移植原始 C 源代码为 crypt

这将花费您一些时间来正确安装,但 IMO 您的程序将更简单、更健壮且安装更紧凑。

编辑:在 SO 上查看这个问题:Problem porting PHP crypt() function to C# - 他写的代码是为了与 BSD crypt 兼容,所以它可能正是你所需要的。我刚刚在Visual Studio 2010 并在此处与 Linux 机器上的 openssl 输出进行比较,并且输出匹配。

于 2013-04-16T21:57:21.430 回答
1

我的开源库CryptSharp(自 2.0 起)支持 MD5 crypt。语法是:

string cryptedPassword = Crypter.MD5.Crypt("password");

应该做你需要的。

詹姆士

于 2013-06-29T14:15:40.707 回答