日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)

發(fā)布時間:2023/12/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

練習(xí)1:加解密字符串

通過本練習(xí)將學(xué)習(xí)通過加密來保護信息,在這里創(chuàng)建一個類似于IM的聊天應(yīng)用程序,加密通信過程中的信息。

?

第一步

BugSmak.sln項目,默認(rèn)的安裝路徑應(yīng)該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Cryptography\exercises\ex01\begin,并編譯。

?

第二步 回顧應(yīng)用程序

1.在解決方案管理器選中Chat.cs文件,選擇View | Code菜單命令。Chat窗體用來接收和發(fā)送信息,上面的灰色TextBox用來顯示聊天信息,底部白色的TextBox用來發(fā)送新的消息。

2.選擇Debug | Start Without Debugging命令運行應(yīng)用程序,聊天窗口將被打開,分別叫做SamToby,消息可以在這兩個窗口之間傳遞,在Toby的消息文本框中輸入一些字符,并單擊Send按鈕,在Sam窗體中作重復(fù)做一次。可以看到交流信息顯示在了聊天窗體中。還有一個控制臺應(yīng)用程序顯示,它用來監(jiān)視聊天的過程,所有的消息都將在這里顯示。

3.關(guān)閉所有窗體并關(guān)閉應(yīng)用程序。

?

第三步 添加加解密

1.選擇Project | Add Reference菜單命令,添加對如下程序集的引用,它默認(rèn)的安裝位置應(yīng)該在C:\Program Files\Microsoft Enterprise Library January 2006\bin目錄下。

Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll

2.打開Chat.cs文件,添加如下命名空間:

using?Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

3.在Chat類中添加如下代碼:

public?partial?class?Chat?:?Form

{

//?TODO:?Configuration?symmetric?algorithm?provider?name

private?const?string?symmProvider?=?"ChatProvider";

//?

}

4.修改SendMessage方法,使用Cryptographer加密消息。

private?void?SendMessage(string?message)

{

????
//?TODO:?Encrypt?message

????
string?encrypted?=?Cryptographer.EncryptSymmetric(symmProvider,?message);

?

????
//?Fire?SendingMessage?Event

????
if?(this.SendingMessage?!=?null)

????????
this.SendingMessage(new?MessageEventArgs(this._name,?encrypted));

}

5.修改MessageReceived方法,使用Cryptographer解密消息。

private?void?MessageReceived(MessageEventArgs?args)

{

????
string?message?=?args.Message;

????
//?TODO:?Decrypt?message

????
string?plainText?=?Cryptographer.DecryptSymmetric(symmProvider,?message);

????
this.txtMessages.AppendText(

????????args.Sender?
+?"?says:?"?+?plainText?+?Environment.NewLine);

}

?

第四步 企業(yè)庫配置工具

1.在項目CustomerManagement中添加一個應(yīng)用程序配置文件(App.config),單擊CustomerManagement項目,選擇Project| Add New Item…菜單命令,在彈出的對話框中選擇Application configuration file,保留名稱為App.config

2.使用Enterprise Library配置工具配置應(yīng)用程序,可以通過開始菜單打開該配置工具,選擇所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打開App.config文件。或者直接在Visual Studio中使用該工具打開配置文件。

3.在解決方案管理器中選中App.config文件,在View菜單或者在右鍵菜單中選擇Open With…,將打開OpenWith對話框,單擊Add按鈕。

4.在Add Program對話框中,設(shè)置Program name指向EntLibConfig.exe文件,默認(rèn)的路徑為C:\Program Files\Microsoft Enterprise Library January 2006\bin,設(shè)置Friendly nameEnterprise Library Configuration,單擊OK按鈕。

Visual Studio會把配置文件(App.config)作為一個命令行參數(shù)傳遞給EntLibConfig.exe

5.在Open With對話框中,選中Enterprise Library Configuration并單擊OK按鈕。

?

第五步 配置應(yīng)用程序使用對稱密鑰加密

1.在應(yīng)用程序上點右鍵選擇New | Cryptography Application Block

2.選中Cryptography Application Block | Symmetric Providers節(jié)點,選擇Action | New | Symmetric Algorithm Provider菜單命令。

3.將會顯示出Type Selector對話框,選擇RijndaelManaged并單擊OK按鈕。

4.密鑰向?qū)_始,選擇Create a new key選擇,并單擊Next按鈕。

通過該向?qū)?chuàng)建一個密鑰。

5.單擊Generate按鈕生成一個新的密鑰,并單擊Next按鈕。

6.單擊Ellipsis并選擇密鑰文件存放位置,在該實驗中,文件將保存在Windows桌面。

注意密鑰將不再保存在配置文件中,每一個密鑰都使用DPAPI保護保存在一個單獨的文件中。

7.選擇User mode或者Machine mode,并單擊Finish按鈕。

當(dāng)創(chuàng)建一個密鑰的時候,需要選擇是用戶模式或者機器模式來限制訪問密鑰文件的權(quán)限。在下列情形下適用機器模式:

應(yīng)用程序運行在專有的服務(wù)器上,再沒有別的應(yīng)用程序運行。

有多個應(yīng)用程序運行在相同的服務(wù)器上,想在這些應(yīng)用程序之間共享這些敏感信息。

8.選中Cryptography Application Block | Symmetric Providers | RijndaelManaged節(jié)點,并設(shè)置如下屬性Name = ChatProvider

9.保存對應(yīng)用程序的配置。

?

第五步 運行應(yīng)用程序

1.選擇Debug | Start Without Debugging菜單命令,運行應(yīng)用程序。

SamToby之間傳遞消息,可以看到,在傳遞過程中消息是加密的,注意觀察控制臺窗口,在接收到消息后是解密的。

2.關(guān)閉應(yīng)用程序。

?

第六步 添加錯誤處理

Chat.cs文件中的SendMessage方法添加如下代碼。

private?void?SendMessage(string?message)

{
????
if?((message?!=?null)?&&?(message.Trim().Length?>?0))

????
{
????????
//?TODO:?Encrypt?message

????????
string?encrypted?=?Cryptographer.EncryptSymmetric(symmProvider,?message);

????????
//?Fire?SendingMessage?Event

????????
if?(this.SendingMessage?!=?null)

????????????
this.SendingMessage(new?MessageEventArgs(this._name,?encrypted));

????}


}

?

更多Enterprise Library的文章請參考《Enterprise Library系列文章

總結(jié)

以上是生活随笔為你收集整理的Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。