如何在C#中使用openssl passwd -1来对抗MySQL

时间:2013-04-16 21:24:47

标签: c# mysql openssl md5

我正在为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组合。

2 个答案:

答案 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");

应该做你需要的。

詹姆斯