讀者詢問資料庫欄位加密問題

摘要:讀者詢問資料庫欄位加密問題

原發問問題:

老師您好:

我有一個表格的某一個欄位要加密,如員工檔的薪資金額及員工姓名,這兩個欄位要加密,讓其他人員從 ENTERPRISE MANAGER 之中開起的表格看到的內容是一堆亂碼,但我在程式之中下 SELECT EMP_ID,NAME,WAGE FROM EMPLOYEES 時顯示是正確的資料,我應該如何做呢?有什麼特殊的技巧或設定就可以完成嗎?

Best Regards

解答:

親愛的讀者您好,很感謝您對於章立民研究室的支持,有關於您提到的問題,回覆如下:

Microsoft SQL Server 2000 本身沒有內建的功能可以滿足您的需要。或許您可以考慮自行撰寫加解密機制,當資料寫入資料庫時,同時將其加密,如此一來,不論是從 ENTERPRISE MANAGER 或是使用程式方式,所查詢到的資料皆是加密過的。當您欲將被加密過的資料還原成原始的資料,只需進行解密機制即可。

由上述的討論,我們可以知道,這樣的加解密機制所使用之演算法必須是可逆的。接下來,我們討論什麼是可逆的、什麼是不可逆的加解密機制。前幾年,媒體大肆報導山東大學教授所破解的 MD5 來說,它就是一個不可逆的(One-Way)加解密機制,也就是說加密之後的密文,無法再據以還原成原本未加密的明文。

於常見的可逆演算法,有
ROT13 ,正因為其演算法簡單又是可逆,因此您可以在網路上找到為數不少的參考資料。如下所示即是一個可以在 SQL Server 2000 中,免費用於加解密的預存程序:

http://www.sqlservercentral.com/columnists/mcoles/freeencryption.asp 

 

 

 

期望此資訊對您有所幫助。

章立民研究室 2007/5/17