經過長時間學習Oracle 9i的Spatial數據加密技術,在這裡我想大家分享一下,看完本文你肯定有不少收獲。
具體加密實現:
1、簡單的數據加密。
1)創建返回值為SDO_GEOMETRY數據類型的自定義函數,從BLOB(或其他任意的數據類型)數據中解密出SDO_GEOMETRY數據並返回。
2)解密過程需要給函數傳入一個密鑰參數,這個密鑰參數來自於你的客戶端程序或Web應用程序。
這樣,別人就無法解析你存儲於Spatial中的數據,從而實現Spatial數據加密。
2、高級的數據加密。
1)用C語言創建返回值為SDO_GEOMETRY數據類型的自定義函數,從BLOB(或其他任意的數據類型)數據中解密出SDO_GEOMETRY數據並返回。這一步需要有OCI接口相關的編程技術,因此實現難度稍高一些。
2)C語言程序讀取機器的硬件碼,經過運算後得出服務端的密鑰。
3)讀取數據時還要給函數傳入客戶端的密鑰參數,兩個密鑰結合才是可以對數據進行解密的最終密鑰。當然,數據入庫時也要用相應的密鑰進行加密。
這樣,經過Spatial數據加密的空間數據就僅僅可以被特定的客戶端和服務器所獲取,其他程序無法獲取。