本章的目標是:
•在登錄檔中儲存加密的資料庫連線字串
•從登錄檔中讀取加密的資料庫連線字串並對其進行解密。
返回頁首
本章適用於以下產品和技術:
•microsoft windows xp 或 windows 2000 server (service pack 3) 以及更高版本的作業系統
•microsoft .*** framework 版本 1.0 (service pack 2) 以及更高版本
•microsoft visual c#® .***
返回頁首
若要學好本章內容:
•您必須具有使用 visual c# .*** 進行程式設計的經驗。
•您必須具有使用 microsoft visual studio® .*** 進行程式設計的經驗。
•您必須具有使用 asp.*** 開發 web 應用程式的經驗。
•按照如何建立加密庫中所述建立常規加密庫。此加密庫所提供的功能在本章中用於為資料庫連線字串加密和解密。
•請閱讀第 12 章資料訪問安全性中的安全儲存資料庫連線字串。其中介紹了一些用於安全儲存資料庫連線字串的技術。
返回頁首
如果開發人員所編寫的應用程式需要訪問資料庫,那麼他們都將面臨乙個相同的問題,即在哪個位置安全儲存資料庫連線字串。登錄檔為他們提供了一種選擇。不過,儘管使用訪問控制列表 (acl) 可保護單個登錄檔項的安全,但為了提高安全性,您應該先對連線字串加密,然後才將其儲存。
本章介紹如何將經過加密的資料庫連線字串儲存在登錄檔中,以及如何從 asp.*** web 應用程式中檢索它。它會用到您在如何建立加密庫中建立的那個常規加密庫。
返回頁首
在開始學習本章之前,您應該知道:
•用於加密的連線字串、初始化向量和金鑰將作為命名值儲存在登錄檔中的以下登錄檔項下面。
•必須儲存初始化向量和金鑰以便對連線字串進行解密。
返回頁首
此過程會建立乙個 windows 應用程式,用來為示例資料庫字串加密並將該字串儲存在登錄檔中。
•在登錄檔中儲存加密資料
1.
2.新增對 encryption.dll 程式集的引用。
要建立此程式集,必須執行本指南中如何建立加密庫中所述的步驟。
3.將下面的using語句新增到 form1.cs 頂部現有using語句的下方。
using encryption;using system.text;
using microsoft.win32;
4.將表 1 中的控制項加入 form1,並如圖 1 所示對它們進行排列。
控制項
文字id
標籤連線字串:
文字框txtconnectionstring
標籤金鑰:
文字框txtkey
標籤初始化向量:
文字框txtinitializationvector
標籤加密字串
文字框txtencryptedstring
標籤解密字串
文字框txtdecryptedstring
按鈕加密
btnencrypt
按鈕解密
b***ecrypt
按鈕寫入登錄檔資料
btnwriteregistrydata
返回頁首
此過程開發乙個簡單的 asp.*** web 應用程式,它將從登錄檔中檢索加密的連線字串並對它進行解密。
•建立 asp.*** 應用程式
1.
2.新增對 encryption.dll 程式集的引用。
要建立此程式集,必須執行本指南中如何建立加密庫中所述的步驟。
3.開啟 webform1.aspx.cs,並將下面的using語句新增到檔案頂部現有using語句的下面。
using encryption;using system.text;
using microsoft.win32;
4.將表 2 中所列的控制項新增到 webform1.aspx 中。
表 2:webform1.aspx 控制項
控制項
文字id
標籤lblencryptedstring
標籤lbldecryptedstring
按鈕獲取連線字串
btngetconnectionstring
5.雙擊「獲取連線字串」按鈕,建立乙個按鈕單擊事件處理程式。
6.將下面的**新增到該事件處理程式中。
registrykey rk = registry.localmachine.opensubkey(lblencryptedstring.text = (string)rk.getvalue("connectionstring");
string initvector = (string)rk.getvalue("initvector");
string strkey = (string)rk.getvalue("key");
decryptor dec = new decryptor(encryptionalgorithm.tripledes );
dec.iv = convert.frombase64string(initvector);
// 解密字串
byte plaintext = dec.decrypt(convert.frombase64string(
lblencryptedstring.text),
convert.frombase64string(strkey));
lbldecryptedstring.text = encoding.ascii.getstring(plaintext);
7.在「生成」選單上,單擊「生成解決方案」。
8.在解決方案資源管理器中右鍵單擊 webform1.aspx,然後單擊「在瀏覽器中檢視」。
9.單擊「獲取連線字串」。
此時,在 web 窗體上就會顯示加密和解密的連線字串。
返回頁首
有關詳細資訊,請參見本指南的如何建立加密庫。
使用C 在登錄檔中儲存資訊的例子
寫出來,方便記憶,以後要用,可以直接改改就能用。複製 如下 using system namespace backend return visibility public static void s ebeforeexit pagevisibility visibility public enum ...
如何在C 中讀寫登錄檔
登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊 以及在視窗系統上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有 可能導致整個系統的完全癱瘓。所以...
如何在C 中輕鬆操作登錄檔
visual studio net以前的版本,要對登錄檔進行修改,則需要呼叫系統api,而現在則不用那麼麻煩,因為.net已經把登錄檔相關的操作封裝到乙個類中,呼叫的時候只要只要呼叫此類物件相應的屬性或方法即可。以下就登錄檔這個類進行說明。首先,要引入註冊類所在的nampespace,如下 接下來就...