我有一个 GWT 客户端通过 HTTP 上的 JSON 与 perl 服务器通信。它工作得很好,但有一些隐私问题,我需要加密交易。在做了一些研究之后,似乎最简单/最好的支持选项是使用 TripleDES,客户端使用 gwt-crypto,服务器使用 Crypt:CBC。问题是我不知道如何在两端使用相同的密钥,因为您设置它们的方式似乎完全不同。在 java/gwt 方面,我正在执行以下操作:
_cipher.setKey(Hex.decode("dc7c62768f0d9d514373d520438ff8f8")); // 16 bytes
在 perl 方面,我正在做:
my $cipher = Crypt::CBC->new( -key => 'dc7c62768f0d9d514373d520438ff8f8',
-cipher => 'DES_EDE3');
我尝试了各种密钥方案,但似乎如果我让 gwt 高兴,那么 perl 就不会了,反之亦然。例如,据我所知,以下 perl 应该可以工作,但是当我尝试它时出现“无效密钥”错误:
my $iv = Crypt::CBC->random_bytes(8);
my $key = pack("H*", 'dc7c62768f0d9d514373d520438ff8f8');
my $cipher = Crypt::CBC->new( -key => $key,
-literal_key => 1,
-keysize => 16,
-header => 'none',
-padding => 'standard',
-iv => $iv,
-cipher => 'DES_EDE3'
);
所以,我想我最终可以弄清楚编码问题,我在跳过箍告诉每一方使用什么键时遇到的麻烦。任何帮助是极大的赞赏。