Encryption Informatica Powercenter的AES 128位加密

Encryption Informatica Powercenter的AES 128位加密,encryption,aes,informatica-powercenter,Encryption,Aes,Informatica Powercenter,在oracle数据库中,我有一个表,其中有一列包含长度为17个ASCI字符(136位)的“字”。我想在Informatica Powercenter v10中用AES 128位加密这些单词。这是不可能的,因为纯文本是136位,大于128位,最后一个字符将被忽略。Informatica没有更高位的加密方法。在这种情况下,我应该如何处理?你们有没有遇到过这种情况? 我想我把17个字符的单词分解成更简单的单词,分别加密/解密,然后连接起来 提前谢谢你 这似乎是在使用“单词”作为加密密钥AES\u EN

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


提前谢谢你

这似乎是在使用“单词”作为加密
密钥
AES\u ENCRYPT
函数接受两个参数:

  • -要加密的字符串。如果我的理解是正确的,你的“话”应该放在这里。这里没有特殊的长度限制,因此可以使用任何字符串端口
  • 密钥
    -要使用的加密密钥限制为16个字符。这就是应该在以后某个时间点用于解密的内容
============================更新=====================

从下面的评论中知道了细节,我试图重现这个错误。我将一个非常简单的映射放在一起,它使用两个端口生成加密文本:

  • AES\u ENCRYPT('Some 16char text','mykey')
    -按照说明,此文本正好包含16个字符
  • AES_ENCRYPT(“一些16字符的文本,加上更多的文本。”,“mykey”)1-完全相同,16字符的文本加上一些额外的字符
我试图证明的是,无论长度如何,输入都被截断为16个字符,因此
AES\u ENCRYPT
的输出是相同的。 映射:

以下是输出:

我的SQL Server目标中也显示了相同的内容:

事实上:结果完全相同,文本似乎被截断了。你说得对

我想在这里指出,如果你能准备好这个,那就太好了。这会节省我一些时间

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

现在,由于能够重现和确认这个问题,我试图解决它

结果是:

SQL Server:

你是对的:文本被解释了。所以我改变了端口的长度:


希望这有帮助

这对于任何现代平台来说都不是问题。是的,AES有128位的块大小,但是实现应该根据需要自动加密更多的块。您可能对加密填充感兴趣,以便进一步阅读。informatica AES实现的版本只使用前16个字符,而忽略其余字符。它不实现任何进一步的块。此外,我不能在InformaticaWell中更改aes函数,这太恶心了。我的下一个方法将是您建议的方法-对折并加密。@StefanCreanga找到支持任意数据长度的AES的完整实现。此外,正如Luck提到的,您还需要填充或不需要填充的模式。明文(值)也有128位的限制。No,它没有任何限制。请参阅此处的两个示例:upper演示了密钥过长问题,在下屏幕上,您可以看到一切正常:尝试以下场景:加密两个17个字符长的字符串,并仅修改其中一个字符串的最后一个字符(这正是我在PROD环境中遇到的情况,它影响了8 mil合同)。加密的结果将是相同的,因为您必须向AES_ENCRYPT函数块提供128位(不高于128位)的数据。如果输入的字符数高于128,则AES_加密不会在128位的数据块中打断字符串,它只会剪切高于16的字符。请证明这是错误的,好的部分是它不返回任何错误,它只是工作