這里主要講述DM數(shù)據(jù)庫(kù)存儲(chǔ)加密中比較常用也比較容易理解的非透明加密相關(guān)內(nèi)容。
非透明加密
引用官方的話說(shuō):DM 對(duì)非透明加密的支持是通過(guò)對(duì)用戶提供加解密接口實(shí)現(xiàn)的。用戶在使用非透明加密時(shí),需要提供密鑰并調(diào)用加解密接口。采用非透明加密可以保證個(gè)人私密數(shù)據(jù)不被包括 DBA 在內(nèi)的其他人獲取。
非透明加密通過(guò)用戶調(diào)用存儲(chǔ)加密函數(shù)來(lái)進(jìn)行,DM 提供了一系列的存儲(chǔ)加密函數(shù),還提供了一個(gè)數(shù)據(jù)加密包 DBMS_OBFUSCATION_TOOLKIT。
簡(jiǎn)單的說(shuō):就是DM數(shù)據(jù)庫(kù)提供了存儲(chǔ)加密函數(shù),用戶調(diào)用存儲(chǔ)加密函數(shù)對(duì)指定的數(shù)據(jù)進(jìn)行加解密操作。
CFALGORITHMSENCRYPT
對(duì)指定類型的明文進(jìn)行加密,并返回密文,密文數(shù)據(jù)類型和 SRC 類型相同,語(yǔ)法格式
CFALGORITHMSENCRYPT(
SRC VARCHAR/TEXT/CLOB,
ALGORITHM INT,
KEY VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密明文的類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
獲取當(dāng)前DM數(shù)據(jù)庫(kù)支持的加密算法
SELECT * FROM V$CIPHERS;
執(zhí)行加密操作
select CFALGORITHMSENCRYPT('111111',514,'secret key');
CFALGORITHMSDECRYPT
對(duì)密文進(jìn)行解密,并得到加密前的相同數(shù)據(jù)類型的明文,語(yǔ)法格式
CFALGORITHMSDECRYPT(
SRC VARCHAR/TEXT/CLOB,
ALGORITHM INT,
KEY VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被解密密文的數(shù)據(jù)類型
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
執(zhí)行解密操作
select CFALGORITHMSDECRYPT('9FF46AA8D86FB25ADED775837F400BB5FE',514,'secret key');
SF_ENCRYPT_BINARY
對(duì) VARBINARY 類型明文進(jìn)行加密,并返回密文,語(yǔ)法格式
SF_ENCRYPT_BINARY(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 VARBINARY 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
加密語(yǔ)句
select SF_ENCRYPT_BINARY(0x12345678EF,514,'secret key',NULL);
SF_DECRYPT_TO_BINARY
對(duì)密文進(jìn)行解密,并得到加密前的 VARBINARY 類型明文,語(yǔ)法格式
SF_DECRYPT_TO_BINARY(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被解密的 VARBINARY 類型密文
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
解密語(yǔ)句
select SF_DECRYPT_TO_BINARY('0x78AAAC21D0A2875AB86DDF16D9E0C063',514,'secret key',NULL);
SF_ENCRYPT_CHAR
對(duì) VARCHAR 類型明文進(jìn)行加密,并返回密文,語(yǔ)法格式
SF_ENCRYPT_CHAR(
SRC VARCHAR,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 CHAR/VARCHAR 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
加密語(yǔ)句
select SF_ENCRYPT_CHAR('111111',514,'secret key',NULL);
SF_DECRYPT_TO_CHAR
對(duì)密文進(jìn)行解密,并得到加密前的 VARCHAR 類型明文,語(yǔ)法格式
SF_DECRYPT_TO_CHAR(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被解密的 VARBINARY 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
解密語(yǔ)句
select SF_DECRYPT_TO_CHAR('0x9FF46AA8D86FB25ADED775837F400BB5',514,'secret key',NULL);
SF_ENCRYPT_DATE
對(duì) DATE 類型明文進(jìn)行加密,并返回密文,語(yǔ)法格式
SF_ENCRYPT_DATE(
SRC DATE,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 DATE 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
加密語(yǔ)句
select SF_ENCRYPT_DATE(cast('2023-11-11' AS DATE),514,'secret key',NULL);
SF_DECRYPT_TO_DATE
對(duì)密文進(jìn)行解密,并得到加密前的 DATE 類型明文,語(yǔ)法格式
SF_DECRYPT_TO_DATE(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被解密的 VARBINARY 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
解密語(yǔ)句
select SF_DECRYPT_TO_DATE('0x67331E1603728F30CA76DC3B4C77A028',514,'secret key',NULL);
SF_ENCRYPT_DATETIME
對(duì) DATETIME 類型明文進(jìn)行加密,并返回密文,語(yǔ)法格式
SF_ENCRYPT_DATETIME(
SRC DATETIME,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 DATETIME 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
加密語(yǔ)句
select SF_ENCRYPT_DATETIME(cast('2023-11-11 11:11:11' AS datetime),514,'secret key',NULL);
SF_DECRYPT_TO_DATETIME
對(duì)密文進(jìn)行解密,并得到加密前的 DATETIME 類型明文,語(yǔ)法格式
SF_DECRYPT_TO_DATETIME(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 DATETIME 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
解密語(yǔ)句
select SF_DECRYPT_TO_DATETIME ('0xF46D6469B5958A4D04C96948F8F9428C',514,'secret key',NULL);
SF_ENCRYPT_DEC
對(duì) DEC 類型明文進(jìn)行加密,并返回密文,語(yǔ)法格式
SF_ENCRYPT_DEC(
SRC DEC,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 DEC 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
加密語(yǔ)句
select SF_ENCRYPT_DEC(cast('3.1415900000' AS dec(15,8)),514,'secret key',NULL);
SF_DECRYPT_TO_DEC
對(duì)密文進(jìn)行解密,并得到加密前的 DEC 類型明文,語(yǔ)法格式
SF_DECRYPT_TO_DEC(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被解密的 VARBINARY 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
解密語(yǔ)句
select SF_DECRYPT_TO_DEC ('0xE19597CBA4C0EAA4437454BB12041A49',514,'secret key',NULL);
SF_ENCRYPT_TIME
對(duì) TIME 類型明文進(jìn)行加密,并返回密文,語(yǔ)法格式
SF_ENCRYPT_TIME(
SRC TIME,
ALGORITHM INT,
KEY VARCHAR,
IV VARCAHR
)
參數(shù)說(shuō)明:
SRC 需要被加密的 TIME 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
加密語(yǔ)句
select SF_ENCRYPT_TIME(cast('11:11:11' AS time),514,'secret key',NULL);
SF_DECRYPT_TO_TIME
對(duì)密文進(jìn)行解密,并得到加密前的 TIME 類型明文,語(yǔ)法格式
SF_DECRYPT_TO_TIME(
SRC VARBINARY,
ALGORITHM INT,
KEY VARCHAR,
IV VARCHAR
)
參數(shù)說(shuō)明:
SRC 需要被解密的 VARBINARY 類型數(shù)據(jù)
ALGORITHM 加密算法 ID,不可以為 NULL。加密算法對(duì)應(yīng)的 ID 可通過(guò)查詢 V$CIPHERS 得到
KEY 采用的密鑰,不可以為 NULL
IV 采用的初始化矢量,可以為 NULL
解密語(yǔ)句
select SF_DECRYPT_TO_TIME ('0x8EEFEE4328CE85853D81179C8D17EA87',514,'secret key',NULL);
SF_GET_CIPHER_NAME
根據(jù)加密算法 ID,獲取加密算法的名稱
SF_GET_CIPHER_NAME(
CIPHER_ID IN INT
)
參數(shù)說(shuō)明:
CIPHER_ID 加密算法 ID
獲取加密算法名稱語(yǔ)句文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-861612.html
select SF_GET_CIPHER_NAME(514);
到這里,關(guān)于DM數(shù)據(jù)庫(kù)常用的加密函數(shù),也就是半透明加密方式也就說(shuō)完了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861612.html
到了這里,關(guān)于達(dá)夢(mèng)(DM)數(shù)據(jù)庫(kù)存儲(chǔ)加密的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!