DECRYPT_BIT、DECRYPT_BINARY、DECRYPT_CHAR 及 DECRYPT_DB

DECRYPT_BIT、DECRYPT_BINARY、DECRYPT_CHAR 及 DECRYPT_DB 函數會傳回解密已加密資料的結果值。 用於解密的密碼是 password-string 值,或 SET ENCRYPTION PASSWORD 陳述式指派的 ENCRYPTION PASSWORD 值。

讀取語法圖跳過視覺化語法圖 DECRYPT_BITDECRYPT_BINARYDECRYPT_CHARDECRYPT_DB (加密資料,密碼字串DEFAULT,整數)

解密函數只能解密使用 ENCRYPT_AES、 變更開始ENCRYPT_AES256,變更結束 ENCRYPT_RC2或 ENCRYPT_TDES 函數加密的值。

encrypted-data
此表示式必須是字串表示式,可傳回 CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY、VARBINARY 或 BLOB 內建資料類型的完整加密資料值。 資料字串必須已使用 ENCRYPT_AES、 變更開始ENCRYPT_AES256,變更結束 ENCRYPT_RC2或 ENCRYPT_TDES 函數進行加密。
password-string
傳回至少 6 個位元組且不超過 127 個位元組的字串值的表示式。 表示式不能是 CLOB。 此表示式必須是用來加密資料的相同密碼,否則 解密會產生與原始加密值不同的值。 如果密碼引數的值是空值或未提供,則會使用 ENCRYPTION PASSWORD 值來解密資料,該值必須已使用 SET ENCRYPTION PASSWORD 陳述式設定。
預設
將使用 ENCRYPTION PASSWORD 值將資料解密,該值必須已使用 SET ENCRYPTION PASSWORD 陳述式設定。
整數
整數常數,指定結果的 CCSID。 如果指定 DECRYPT_BIT 或 DECRYPT_BINARY ,則不得指定第三個引數。

如果指定 DECRYPT_CHAR ,則 integer 必須是有效的 SBCS CCSID 或混合資料 CCSID。 它不能是 65535 (位元資料)。 如果第三個引數是 SBCS CCSID ,則結果是 SBCS 資料。 如果第三個引數是混合的 CCSID ,則結果是混合資料。 如果未指定第三個引數,則結果的 CCSID 是現行伺服器的預設 CCSID。

如果指定 DECRYPT_DB ,則 integer 必須是有效的 DBCS CCSID。 如果未指定第三個引數,則結果的 CCSID 是與現行伺服器的預設 CCSID 相關聯的 DBCS CCSID。

結果的資料類型由指定的函數及第一個引數的資料類型決定,如下表所示。 如果不支援從實際加密資料類型到函數結果的強制轉型,則會傳回警告或錯誤。

功能 第一個引數的資料類型 加密資料的實際資料類型 結果
DECRYPT_BIT CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 字串 (character string) 位元資料的 VARCHAR
DECRYPT_BIT CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 圖形字串 (graphic string) 錯誤或警告 **
DECRYPT_BIT CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 二進位字串 (binary string) 錯誤或警告 **
DECRYPT_BIT BLOB 任何字串 錯誤
DECRYPT_BINARY CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 任何字串 VARBINARY
DECRYPT_BINARY BLOB 任何字串 BLOB
DECRYPT_CHAR CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 字串 (character string) VARCHAR
DECRYPT_CHAR CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY Unicode 圖形字串 VARCHAR
DECRYPT_CHAR CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 非 Unicode 圖形字串 錯誤或警告 **
DECRYPT_CHAR CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 二進位字串 (binary string) 錯誤或警告 **
DECRYPT_CHAR BLOB 字串 (character string) CLOB
DECRYPT_CHAR BLOB Unicode 圖形字串 CLOB
DECRYPT_CHAR BLOB 非 Unicode 圖形字串 錯誤或警告 **
DECRYPT_CHAR BLOB 二進位字串 (binary string) 錯誤或警告 **
DECRYPT_DB CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY UTF-8 字串或圖形字串 VARGRAPHIC
DECRYPT_DB CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY Non-UTF-8 字串 錯誤或警告 **
DECRYPT_DB CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY 或 VARBINARY 二進位字串 (binary string) 錯誤或警告 **
DECRYPT_DB BLOB UTF-8 字串或圖形字串 DBCLOB
DECRYPT_DB BLOB Non-UTF-8 字串 錯誤或警告 **
DECRYPT_DB BLOB 二進位字串 (binary string) 錯誤或警告 **
附註:

** 如果解密函數位於外部次選取的選取清單中,則會傳回資料對映警告。 否則會傳回錯誤。 如需資料對映警告的相關資訊,請參閱 指派和比較

如果 encrypted-data 包含提示,函數不會傳回提示。 結果的長度屬性是 encrypted-data 之資料類型的長度屬性減去 8 個位元組。 結果的實際長度是已加密原始字串的長度。 如果 encrypted-data 包含加密字串以外的位元組,則函數不會傳回這些位元組。

若引數可能為空值,結果就可能為空值;若引數是空值,結果就是空值。

如果使用不同於原始加密值的 CCSID 來解密資料,則在將解密值轉換成此 CCSID 時可能會發生擴充。 在這種情況下, encrypted-data 應該強制轉型為具有較大位元組數的可變長度字串。

附註

密碼保護: 若要防止無意中存取加密密碼,請不要在程式、程序或函數的來源中指定 password-string 作為字串常數。 請改用 SET ENCRYPTION PASSWORD 陳述式或主變數或廣域變數。

連接至遠端關聯式資料庫時,強烈建議使用 TLS 連線來保護密碼。 如果沒有 TLS ,加密密碼會以「明碼」傳送。 也就是說,密碼本身未加密。

替代語法: 為了與舊版 Db2®相容,可以指定 DECRYPT_BIN 來取代 DECRYPT_BIT。

範例

  • 假設表格 EMP1 具有稱為 SSN 的社會保險直欄。 此範例使用 ENCRYPTION PASSWORD 值來保留加密密碼。
      SET ENCRYPTION PASSWORD = :pw
    
      INSERT INTO EMP1 (SSN) VALUES ENCRYPT_RC2( '289-46-8832' )
    
      SELECT DECRYPT_CHAR( SSN)
        FROM EMP1
    DECRYPT_CHAR 函數會傳回原始值 '289-46-8832'。
  • 此範例明確傳遞已在變數 pw 中設定的加密密碼。
      INSERT INTO EMP1 (SSN) VALUES ENCRYPT_TDES( '289-46-8832', :pw)
    
      SELECT DECRYPT_CHAR( SSN, :pw)
        FROM EMP1
    DECRYPT_CHAR 函數會傳回原始值 '289-46-8832'。