我正在为iRedMail服务器制作一个扩展程序,我想使用C#代码添加新用户。 IrerdMail将用户藏在MySQL数据库中,用户的密码使用openssl(MD5)加密。 当我查看iRedMail api创建用户时,bash脚本中有一行代码:
openssl passwd -1 passwordToBeEncrpted
终端内的命令返回MD5字符串,如果我将该字符串复制到我的应用程序并对邮件服务器上托管的MySQL表执行insert命令,则创建的用户工作正常。
从用户密码生成MD5的正确方法是什么,以便我可以将其插入MySQL数据库?
我的应用程序在iRedMAil旁边的其他服务器上运行,是否必须在同一台机器上创建MD5?
我正在考虑从C#代码调用SSH命令,是否有免费的.NET库可以重用来自SSH的输出串作为变量?
这可以使用类似于MSF服务器中的UDF之类的东西来完成。我知道我在MSSQL中的云调用命令应用程序是如何在MySQL中实现的 - CentoOS组合。
答案 0 :(得分:1)
只是一个想法:而不是试图调用openssl(用户必须安装,或者你必须在安装过程中包含)以及所有相关的麻烦,而不是仅仅移植the original C source for crypt。
这将花费你一些时间来做对,但IMO你的程序将更简单,更健壮,更紧凑的安装。
编辑:在这里看看这个问题:Problem porting PHP crypt() function to C# - 他写的代码是为了与BSD crypt兼容,所以它可能就是你需要的......我只是在Visual中测试它Studio 2010与Linux上的openssl输出进行比较,输出匹配。答案 1 :(得分:1)
我的开源库CryptSharp(自2.0起)支持MD5 crypt。语法是:
string cryptedPassword = Crypter.MD5.Crypt("password");
应该做你需要的。
詹姆斯