C#实现的apache htpasswd加密
一.VisualSvn Server 这个软件大家都知道,具体使用时创建用户名密码和组时,每次都要登陆到VisualSvn Server所在的机器上,次次如此...
由于一些原因要把这个用户管理的功能集成到OA中,这样可以OA中集中管理SVN的帐号(所有程序都是基于局域网使用)
二.VisualSvn Server的帐户文件存在当前Repositories下的 htpasswd 文件中,格式为 用户名:xxxxxxxxxxxxxxxxxxxxxxxxxx(x为加密后的密码字符串)
这样需要解决的关键就在于怎么样得到密码加密后的字符串.通过google找到了一个C#实现htpasswd加密的类库"CryptSharp", site:https://www.zer7.com/software/cryptsharp (不需要FQ)
三.使用代码方法
using CryptSharp;
string cryptedPassword = Crypter.MD5.Crypt(password, new CrypterOptions() { { CrypterOption.Variant, MD5CrypterVariant.Apache } });
校验方法
bool matches = Crypter.CheckPassword(testPassword, cryptedPassword);
当然,这个类库还支持其它加密方法,具体请参照类库的网站
- BCrypt,
- LDAP,
- MD5 (and Apache's htpasswd variant),
- PHPass (WordPress, phpBB, Drupal),
- SHA256 and SHA512, and
- Traditional and Extended DES.
上述代码,通过手动替换我自己的VisualSvn Server的服务器上的用户的密码,测试通过
四.关键的问题解决后,回到 一中要解决的问题,这里只是一个思路
我的想法是, OA会部署到一台服务器上,web形式的,无法直接修改VisualSvn Server的密码文件,所以还需要在VisualSvn Server的那台机器上运行一个代理程序,由这个代理程序来实现具体的密码文件的读写
像这样, OA(web)-->代理程序-->读写密码文件并返回结果
接下来会按照这个思路来实现这个功能
五.不知道大家有没有更好解决方案,希望大家能提出自己的意见
如果觉得本文还行,请推荐;如果觉得本文太水,请留下您的意见,我会努力改进!