1. 程式人生 > >C#實現的apache htpasswd加密

C#實現的apache htpasswd加密

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加密