Шифровать 3DES на Oracle, расшифровка не работает на DB2 - PullRequest
0 голосов
/ 18 июня 2019

Мне нужно зашифровать данные в Oracle и расшифровать в DB2.

Я могу использовать только 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 Ответ

2 голосов
/ 18 июня 2019

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

...