在oracle数据库中,我有一个表,该表的列包含长度为17个ASCI字符(136位)的“单词”。我想使用AES 128位在Informatica Powercenter v10中加密这些单词。这是不可能的,因为纯文本为136位,大于128位,并且最后一个字符将被忽略。 Informatica没有更高的位加密方法。在这种情况下应该如何处理?你们中有人遇到过吗? 我以为我可以将17个字符的单词分解为较小的单词,并分别对其进行加密/解密,然后再将其串联起来。
提前谢谢!
答案 0 :(得分:1)
这似乎是您使用“字”作为加密key
。 AES_ENCRYPT
函数有两个参数:
value
-要加密的字符串。如果我的理解是正确的,那么您的“话”应该放在这里。这里没有特殊的长度限制,因此可以使用任何字符串端口。key
-要使用的加密密钥。 此限制为16个字符。这是在以后的某个时间点解密所要使用的。=====================更新===================
了解以下注释的详细信息后,我尝试重现该错误。我将一个非常简单的映射放在一起,该映射使用两个端口来生成加密的文本:
AES_ENCRYPT('Some 16char text', 'mykey')
-根据说明,此文本恰好包含16个字符我要证明的是,无论长度如何,输入都会被截断为16个字符,因此AES_ENCRYPT
的输出将是相同的。
映射:
以下是输出:
在我的SQL Server目标中显示相同的内容
确实:结果完全一样,文本似乎被截断了。你说得对!
我想在这里指出,如果您准备好了,那就太好了。这样可以节省一些时间。
=====================解决方案====================
现在,由于能够重现并确认问题,我试图解决它。
您是对的:文本被删节了。所以我更改了端口的长度:
希望这会有所帮助!