C#實現的apache htpasswd加密
阿新 • • 發佈:2017-11-18
matches 部署 web 問題 word 文件中 當前 用戶 基於
一.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)-->代理程序-->讀寫密碼文件並返回結果
接下來會按照這個思路來實現這個功能
五.不知道大家有沒有更好解決方案,希望大家能提出自己的意見
如果覺得本文還行,請推薦;如果覺得本文太水,請留下您的意見,我會努力改進!
C#實現的apache htpasswd加密