【问题标题】:How to decrypt DB2 data in another data warehouse platform如何在另一个数据仓库平台中解密 DB2 数据
【发布时间】:2021-01-06 09:52:13
【问题描述】:

我们需要将数据从 db2 (db2 for AS400) 发送到另一个数据仓库平台 (Hive)。但是我们需要先加密 DB2 中的数据。然后目标服务器将连接到 DB2 以导出数据并解密目标服务器中的数据。

在 DB2 中加密数据的 SQL:

INSERT INTO TESTAES
SELECT ENCRYPT_AES( ACCOUNT, '1234567890') FROM TESTPLAIN;

我知道 DB2 中的 DECRYPT_CHAR 函数:

SELECT DECRYPT_CHAR( ACCOUNT, '1234567890') FROM TESTAES

但是当我们将此表加载到另一个平台后,我们不知道如何解密数据。我们不知道 DB2 解密算法。

我认为可行的方式:

(1)在DB2中得到ENCRYPT_AES的解密算法,我们可以在目标服务器中编写程序来解密数据。但 IBM 在任何文档中都分享了这一点。我在 IBM DB2 文档中搜索过,只是告诉我们

加密算法:使用的内部加密算法来自 IBM Research 的 CLiC Toolkit。 128 位加密密钥是使用 SHA1 消息摘要从密码导出的?https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/db2/rbafzscaencryptaes.htm

(2)在DB2中获取ENCRYPT_AES的解密算法包,我们可以将这个包导入目标服务器来解密数据。 IBM 有没有这样的包?

(3) 使用另一个开源/通用函数/包来加密 DB2 中的数据。我们知道算法,我们可以编写程序/或使用相同的算法包来解密数据。但我不知道我们如何加密 AS400 db2 中的数据,除了 ENCRYPT_AES。也许写一个java程序或别的什么?

有人能分享一下将加密数据迁移到另一个平台的经验吗?

【问题讨论】:

    标签: algorithm encryption db2


    【解决方案1】:

    是标准的AES算法,但是AS400默认的CCSID是EBCDIC。

    解密后是否需要将DATA转为UTF-8。

    【讨论】:

    • 我知道 ENCRYPT_AES 是标准算法。但是我试过了,没有解密 DB2 之外的数据。因为 AES 有 4 种模式(ECB/CBC/...)。并且有4-5种填充方法。如何使用 db2 SHA1 密钥。太不为人知了。所以我不知道如何解密DB2之外的数据。
    【解决方案2】:

    我认为这个问题可以结束了。因为

    (1) 我问过IBM技术支持,他建议我们自己写加解密函数。也许DB2加密函数的算法是个秘密。

    (2) 我创建了一个 DB2 UDF 来调用 AS400 中的 Java 程序。最后,它起作用了。我可以在 DB2 中加密数据,其他数据库得到加密数据后,可以在其他数据库中解密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 2014-01-31
      • 2019-05-01
      • 2011-02-23
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多