黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

在InstallShield中加密字符串,在C#中解密

系統(tǒng) 2603 0
?????????一般情況下,Asp.Net程序中,數(shù)據(jù)庫(kù)連接字符串大多存儲(chǔ)在配置文件中。如果程序不是手工發(fā)布,而是通過(guò)安裝程序部署,那么通常在安裝過(guò)程中需要用戶輸入數(shù)據(jù)庫(kù)管理員帳號(hào)和密碼,以便安裝數(shù)據(jù)庫(kù)。同時(shí)將管理員帳號(hào)和密碼以及數(shù)據(jù)庫(kù)服務(wù)器地址(或者數(shù)據(jù)庫(kù)連接字符串)寫(xiě)入配置文件中。但是如果不加密,尤其是數(shù)據(jù)庫(kù)管理員密碼,若以明碼形式存儲(chǔ),極容易被竊取。
???????? 這就需要對(duì)字符串進(jìn)行加密處理。但是在安裝制作軟件(我用的是InstallShield 12)中沒(méi)有提供專用的加密方法,而且在InstallShield中加密過(guò)的字符串在Asp.Net(我用的是C#編寫(xiě)Asp.Net)中要能夠被解密,則必須用兩者通用的加密解密方法。因此我想到,每個(gè)字符的ASCII碼都是通用的,只要在InstallShield中對(duì)字符的ASCII碼進(jìn)行處理,比如加一或移位,得到一個(gè)新的字符串,再到C#?中進(jìn)行逆向操作,就可以還原為原來(lái)的字符串。
????????在尋思用什么方法加密的時(shí)候,偶然想到曾經(jīng)在一外網(wǎng)站上下載的一段代碼,趕緊找將出來(lái)(后來(lái)還幸運(yùn)地回憶起那個(gè)網(wǎng)站,那就是非常有名的 InstallSite ,大家可以上去逛逛,那里有很多InstallShield的腳本示例代碼,可以下載參考參考) ,他的源碼如下:
////////////////////////////////////////////////////////////////////////////// /
//
//
// ?Function:?String2Password
//
//
//
// ??Purpose:?This?function?takes?a?string?and?returns?a?numeric?equivalent??? //
// ???????????of?all?the?character's?ASCII?values?added?together.
//
// ???????????(Note:?InstallShield?may?use?different?values?than?the?ASCII???? //
// ???????????table I?did?not?verify?this.)
//
//
//
////////////////////////////////////////////////////////////////////////////// /
function?String2Password(?nAnswer,?szName?)
???? STRING?szRight,?szLeft;
???? CHAR???cChar;
???? NUMBER?nLength;

?begin

?????? nAnswer?
= ? 0 ;
?????? nLength?
= ?StrLength(szName);
???
??? while ?(nLength? > ? 0 )
????????StrSub(szRight,?szName,?
1 ,?(nLength - 1 ));
????????StrSub(szLeft,?szName,?
0 ,? 1 );
????????cChar?
= ?szLeft[ 0 ];
????????
if ?(cChar? < ? 0 )?then
???????????? cChar?
= ?cChar? & ? 255 ;
????????endif;
????????szName?
= ?szRight;
????????nAnswer?
= ?nAnswer? + ?cChar;
????????nLength?
= ?nLength? - ? 1 ;
???endwhile;

?end;

????????這段代碼返回的是一個(gè)求和的數(shù)字,并不完全符合我們的要求,而且我發(fā)現(xiàn)cChar=szLeft[0]的取值是有問(wèn)題的.大家注意到?jīng)]有,代碼作者也在注釋中有說(shuō)明.也不知道 InstallSite 為什么把這種有問(wèn)題的代碼作放在網(wǎng)站上,還居然作為Sample供下載.
??????? 于是將其改造了一番:
???????
?/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//???
//??????????????????? string2password.rul
//?
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1
function ? STRING ?String2Password(szName?)
?2 ? STRING ?szRight , ?szLeft , szAnswer;
?3 ?CHAR???cChar;
?4 ? NUMBER ?nLength;
?5
?6 ?begin
?7
?8 ???szAnswer? = ? "" ;
?9 ???nLength? = ?StrLength(szName);
10 ??? while ?(nLength? > ? 0 )
11 ??????StrSub(szRight , ?szName , ? 1 , ?(nLength - 1 ));
12 ??????StrSub(szLeft , ?szName , ? 0 , ? 1 );
13 ??????cChar? = ?STRTOCHAR(szLeft);
14 ??????cChar? = ?cChar? + 1 ;
15 ??????szName? = ?szRight;
16 ??????CharReplace(szLeft , STRTOCHAR(szLeft) , cChar , 0 )
17 ??????szAnswer? = ?szAnswer? + ?szLeft;
18 ??????nLength? = ?nLength? - ? 1 ;
19 ??? endwhile ;
20 ??? return ?szAnswer;
21 ? end ;

??????? 至于C#的解碼就很簡(jiǎn)單了,這里也一并貼出來(lái),湊個(gè)數(shù)吧:
?1 ? public ? string ?password2string( string ?sPass)
?2 ???? {
?3 ???????? string ?sResult? = ? string .Empty;
?4 ???????? for ?( int ?i? = ? 0 ;?i? < ?sPass.Length;?i ++ )
?5 ???????? {
?6 ???????????? int ?num? = ?( int ) char .Parse(sPass.Substring(i, 1 ))? - ? 1 ;
?7 ????????????sResult += (( char )num).ToString();
?8 ????????}

?9 ???????? return ?sResult;
10 ????}

??????? 小結(jié):這里為了說(shuō)明問(wèn)題只是用了加1減1的方法,非常簡(jiǎn)單.我正在研究基于XXTea的加密方法,等有了結(jié)果在公布出來(lái).

在InstallShield中加密字符串,在C#中解密


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論