0

我尝试从源中提取字节数据,对其进行加密,然后将其存储在文件系统中。

对于加密,我使用jasyptBasicTextEncryptor类。为了存储到文件系统,我使用了Apache 的 Commons IOUtils类。

需要时,这些文件将被解密,然后发送到用户的浏览器。该系统在默认字符集为MacRoman的本地计算机上运行,​​但在默认字符集为UTF-8的服务器上失败。

当我在流程的每个阶段明确设置编码以使用MacRoman时,它也可以在服务器上运行,但我对此表示怀疑,因为我的其余代码使用UTF8

有没有一种方法可以在不转换为 MacRoman 的情况下使用代码?

4

2 回答 2

1

您应该在任何地方都使用 UTF8。

只要您在操作的每一端使用相同的编码(并且只要编码可以处理您需要的所有字符),您就可以了。

于 2012-07-06T18:24:58.087 回答
1

在您对另一个答案的评论中,您声称您没有使用编码,但这是不可能的。您正在使用 BasicTextEncryptor 类,根据本文档,该类仅适用于字符串和字符数组。这意味着,在某些时候,您正在从与编码无关的字节数组转换为特定于编码的字符串或字符数组。这意味着无论您是否意识到,您都依赖于某个地方的编码。您需要跟踪发生转换的位置并确保它具有正确的编码。

您的问题指出,“当我在流程的每个阶段明确设置编码时”,因此您需要知道它是如何在数据库中编码的。如果这没有意义,请继续阅读。

也有可能您只是尝试加密从数据库中取出的文件,而您并不关心字符串表示;您想将其视为纯字节,而不是文本。在这种情况下,BasicTextEncrypter(“用于轻松执行正常强度文本加密的实用程序类。”)不适合此任务。它加密字符串。BasicBinaryEncryptor(“用于轻松执行二进制(字节数组)的正常强度加密的实用程序类。”)是您所需要的。

于 2016-05-06T20:39:54.930 回答