用于Informatica Powercenter的AES 128位加密

时间:2018-09-18 21:42:54

标签: encryption aes informatica-powercenter

在oracle数据库中,我有一个表,该表的列包含长度为17个ASCI字符(136位)的“单词”。我想使用AES 128位在Informatica Powercenter v10中加密这些单词。这是不可能的,因为纯文本为136位,大于128位,并且最后一个字符将被忽略。 Informatica没有更高的位加密方法。在这种情况下应该如何处理?你们中有人遇到过吗? 我以为我可以将17个字符的单词分解为较小的单词,并分别对其进行加密/解密,然后再将其串联起来。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

这似乎是您使用“字”作为加密keyAES_ENCRYPT函数有两个参数:

  • value-要加密的字符串。如果我的理解是正确的,那么您的“话”应该放在这里。这里没有特殊的长度限制,因此可以使用任何字符串端口。
  • key-要使用的加密密钥。 限制为16个字符。这是在以后的某个时间点解密所要使用的。

=====================更新===================

了解以下注释的详细信息后,我尝试重现该错误。我将一个非常简单的映射放在一起,该映射使用两个端口来生成加密的文本:

  • AES_ENCRYPT('Some 16char text', 'mykey')-根据说明,此文本恰好包含16个字符
  • 1AES_ENCRYPT('大约16个字符的文本,还有更多文本。','mykey')1-完全相同,16个字符的文本加上一些其他字符。

我要证明的是,无论长度如何,输入都会被截断为16个字符,因此AES_ENCRYPT的输出将是相同的。 映射:

AES_ENCRYPT initial mapping

以下是输出:

AES_ENCRYPT initial mapping output file

在我的SQL Server目标中显示相同的内容

AES_ENCRYPT initial mapping output DB

确实:结果完全一样,文本似乎被截断了。你说得对!

我想在这里指出,如果您准备好了,那就太好了。这样可以节省一些时间。

=====================解决方案====================

现在,由于能够重现并确认问题,我试图解决它。

结果是: AES_ENCRYPT modified mapping output file

SQL Server: enter image description here

您是对的:文本被删节了。所以我更改了端口的长度:

AES_ENCRYPT modified mapping

希望这会有所帮助!