国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

正則表達(dá)式匹配并替換字符串

2019-11-17 02:08:06
字體:
供稿:網(wǎng)友

正則表達(dá)式匹配并替換字符串

場景:

2012年在做廣州地鐵協(xié)同辦公項(xiàng)目時(shí),客戶覺得明文的數(shù)據(jù)庫鏈接用戶密碼配置在web.config里面不安全;其實(shí).NET里的web.config在IIS中有所限制,對(duì)安全性還是有保障的。但是客戶既然有這樣稍微“變態(tài)”的需求,那我們就考慮怎么去把它實(shí)現(xiàn)吧。

存在的技術(shù)難點(diǎn):

(1)web.config中配置的數(shù)據(jù)庫鏈接用戶密碼必須是經(jīng)過特殊加密的

(2)從第一點(diǎn)出發(fā),既然要加密,那是選擇md5之類的不可逆加密,還是選擇AES256之類的可逆加密呢?由于在數(shù)據(jù)訪問層中連接數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互必須是有效的明文用戶和其密碼,所以我們選擇AES256之類的可逆加密,加密解密算法可以進(jìn)一步自定義,這里就不講解如何實(shí)現(xiàn),相信online search下就很多相關(guān)文章了

好了,話不多說,代碼實(shí)踐見真理:

例如加密前為:eip_hr_user123,加密后為:3OHOG6W9NgpJTriw4x6JDg==dataconfiguration.config配置文件內(nèi)容:
 1 <configuration> 2     <configSections> 3         <section name="dataConfiguration" type="Microsoft.PRactices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 4     </configSections> 5     <dataConfiguration defaultDatabase="ORADBConnection" /> 6     <connectionStrings> 7         <add name="ORADBConnection" connectionString="Persist Security Info=True;User ID=eip_hr_user;PassWord=3OHOG6W9NgpJTriw4x6JDg==;Data Source=prd" 8       providerName="System.Data.OracleClient" /> 9     </connectionStrings>10 </configuration>

.NET中使用正則表達(dá)式匹配并替換字符串,其實(shí)在javaScript中也可以用這樣的正則表達(dá)式,只是寫法大同小異而已:

 1 internal Database oraDB 2 { 3     get 4     { 5         if (_oradb != null) return _oradb; 6         FileConfigurationSource dataSource = new FileConfigurationSource("dataconfiguration.config"); 7         ConnectionStringsSection CSSection = (ConnectionStringsSection)dataSource.GetSection("connectionStrings"); 8         ConnectionStringSettings csSettings = csSection.ConnectionStrings["ORADBConnection"]; 9         if (csSettings != null)10         {11             string connectionStr = csSettings.ConnectionString;12             //author: Kenmu13             //created time: 2012-09-2414             //function: 針對(duì)密碼進(jìn)行加密的情況,必須解密 begin15             string pwd;16             Regex r = new Regex("Password=(?<Pwd>[^;]+)", RegexOptions.IgnoreCase);//?<Pwd>為標(biāo)示符,不參與匹配的;+?表示非貪婪匹配17             Match m = r.Match(connectionStr);18             if (m.Success)19             {20                 pwd = m.Groups["Pwd"].Value; //獲取到密文21                 try22                 {23                     connectionStr = connectionStr.Replace(string.Format("={0}", pwd), string.Format("={0}", Cryptogram.DecryptPassword(pwd))); //對(duì)密文進(jìn)行解密操作,Cryptogram.DecryptPassword為自定義的可逆解密方法24                 }25                 catch26                 {27                 }28             }29             //function: 針對(duì)密碼進(jìn)行加密的情況,必須解密 end30             _oradb = new OracleDatabase(connectionStr);31         }32         return _oradb;33     }34 }


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上犹县| 台东县| 嘉善县| 贵港市| 宁陵县| 盐津县| 桑日县| 黑河市| 白城市| 新安县| 乌鲁木齐市| 昔阳县| 灵寿县| 油尖旺区| 濮阳县| 浮山县| 嘉兴市| 石棉县| 同德县| 和平区| 宁晋县| 榕江县| 竹山县| 渭南市| 偃师市| 黄陵县| 乐昌市| 唐河县| 黎平县| 叶城县| 临汾市| 方城县| 上栗县| 淳化县| 万源市| 高要市| 洪湖市| 绥德县| 远安县| 新龙县| 辽中县|