Java 在加密/解密中排除一组字符

Java 在加密/解密中排除一组字符,java,cryptography,encryption,Java,Cryptography,Encryption,加密和解密完成后,我面临一些问题。我正在尝试使用JavaCryptAPI加密/解密我的查询字符串(而不是主机名和上下文)。我们永远不知道我们会得到什么样的线。嗯,这是正确的。加密完成后,我需要将此URL传递给JS函数,在该函数中抛出未终止的字符串常量。这里的问题是/字符和等 此外,由于没有发生初始加密,因此很少有其他字符Ex:+ 我还看到加密字符串中很少有换行符。这条线为什么断了?它是加密的一部分吗?现在我想找出造成这个问题的字符,我想告诉加密算法不要使用这些字符集。我们有没有办法做到这一点 我

加密和解密完成后,我面临一些问题。我正在尝试使用JavaCryptAPI加密/解密我的查询字符串(而不是主机名和上下文)。我们永远不知道我们会得到什么样的线。嗯,这是正确的。加密完成后,我需要将此URL传递给JS函数,在该函数中抛出未终止的字符串常量。这里的问题是
/
字符和等

此外,由于没有发生初始加密,因此很少有其他字符Ex:+

我还看到加密字符串中很少有换行符。这条线为什么断了?它是加密的一部分吗?现在我想找出造成这个问题的字符,我想告诉加密算法不要使用这些字符集。我们有没有办法做到这一点

我需要将这个URL传递给一个JS函数,但这个函数失败了 抛出未终止字符串常量

在我看来,您实际上需要转义这个字符串以便在Javascript中使用。e、 g.参见Apache Commons


我很怀疑你能否一个字符一个字符地控制加密。它将取决于使用的算法,但可能会通过查看数据块生成数据块。毕竟,这是加密。

我不熟悉Java和Crypt API,但在我看来,您似乎遇到了编码问题。由于加密的输出是二进制的,API很可能会对其进行编码,而且默认情况下,您会得到
base64
编码。因此,我会查看API规范,了解如何更改/设置编码,并使用不同的编码,例如十六进制


您可以通过获取API的加密输出并将其通过base64解码器(linux
base64
工具或在线解码器)来测试该假设。

我处于只编写此加密逻辑的状态。转换后的url可以传递给JS函数,也可以用作
href
等的一部分。底线是,加密的url(querystring)应该适合所有位置。事实上。对于XML、Javascript等,您需要以不同的方式进行转义。因此,您需要针对目标(在本例中为Javascript)进行适当的转义。这看起来是一种通过加密查询来保护数据库的奇怪且不安全的方法。如果查询的数量是固定的,您应该在服务器端用ASP/PHP/JSP对它们进行编码。。。代码,永远不要发送给客户!跑了几次之后,我发现这是因为线路中断。从这里,我看到了一个名为“每行最大字符数”的选项为什么要限制每行的字符数?我想这是因为base64在SMTP等协议中大量使用,其中每行字符数是有限的,我可以避免这种情况吗?如何告诉API不限制每行字符数?我不熟悉这个API。我将查看如何设置和配置它使用的编码。将编码更改为更合适的编码可能更容易