在oracle上加密3DES,解密在DB2上不起作用

时间:2019-06-18 12:12:11

标签: oracle encryption plsql db2 3des

我需要在oracle上加密数据并在DB2上解密。

我只能在oracle上使用DBMS_OBFUSCATION_TOOLKIT。

set serveroutput on;
DECLARE
    L_TEXT       VARCHAR2(16) := '1234567890123456';
    U_ID         VARCHAR2(16) := 'asdfghjk12345678';
    L_ENCRYPTED  VARCHAR2(512);
BEGIN

DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT(INPUT => UTL_RAW.CAST_TO_RAW(L_TEXT),
                                     KEY => UTL_RAW.CAST_TO_RAW(U_ID),
                                     ENCRYPTED_DATA => L_ENCRYPTED);
dbms_output.put_line(L_ENCRYPTED);
END;

OUTPUT: 9E2CC8BFE31C23189D16A6D4E946DF2E
-----------------------------------------------
select decrypt_char(CAST('9E2CC8BFE31C23189D16A6D4E946DF2E' AS VARBINARY(1000)), 'asdfghjk12345678')  from SYSIBM.SYSDUMMY1

OUTPUT: ExampleExceptionFormatter: exception message was: [SQ20146] The decryption function failed.  The data is not encrypted.

你能帮我吗?

1 个答案:

答案 0 :(得分:2)

DES3ENCRYPT听起来像是使用DES3。

DECRYPT_CHAR在DB2(不推荐使用的BTW)上可以“只能解密使用ENCRYPT函数加密的值”

ENCRYPT加密算法为“带填充的RC2分组密码”

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0004210.html