示範使用 DB2 內建加密函數 ENCRYPT 與 DECRYPT_CHAR 實現表資料欄位層級加解密,加解密密碼設定為全域性。
1. 建立支援二進位資料的表
C:>db2 CREATE TABLE encode_demo(col1 VARCHAR(100) FOR BIT DATA)
DB20000I SQL 命令成功完成。
2. 設定全域加解密密碼
C:>db2 SET ENCRYPTION PASSWORD = 'loveunix'
DB20000I SQL 命令成功完成。
3. 預覽加密結果
C:>db2 VALUES(ENCRYPT('loveunix'))
1
---------------------------------------------------
x'08BC44FF6A05A3D5240E86CFB2CE60F243AA83C41B7221D7'
4. 插入加密資料
C:>db2 INSERT INTO encode_demo VALUES(ENCRYPT('loveunix'))
DB20000I SQL 命令成功完成。
5. 解密查詢驗證
C:>db2 SELECT DECRYPT_CHAR(col1) AS encode FROM encode_demo
ENCODE
--------------------------------------------------------------------------------
loveunix
1 筆記錄已選擇。
FOR BIT DATA:欄位資料以二進位方式儲存,支援加密後的二進位輸出SET ENCRYPTION PASSWORD:設定 Session 層級的加解密金鑰,後續 ENCRYPT/DECRYPT 函數自動使用ENCRYPT():回傳加密後的二進位資料(BLOB 型別)DECRYPT_CHAR():將加密二進位資料解密並轉換為字串,若資料非字串可用 DECRYPT_BINARY()適用於敏感欄位(如身分證字號、信用卡號、密碼雜湊)的欄位層級加密保護,確保資料在儲存與傳輸過程中的機密性。搭配權限控制,實現多層次資料安全防護。