gpt4 book ai didi

java - 避免在加密和编码的 URL 字符串中换行

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:53 26 4
gpt4 key购买 nike

我正在尝试实现一个简单的字符串编码器来混淆 URL 字符串的某些部分(以防止它们被用户弄乱)。我使用的代码几乎与 JCA guide 中的示例相同,除了:

  • 使用 DES(假设它比 AES 快一点,并且需要更小的 key )和
  • 对字符串进行 Base64 编码/解码以确保它对于 URL 而言是安全的。

由于我无法理解的原因,输出字符串以换行符结尾,我认为这是行不通的。我不知道是什么原因造成的。关于更容易的类似内容的建议或指向其他一些资源的建议?我发现所有的密码学引用都让我有点头疼(并且矫枉过正),但是一个简单的 ROT13 实现是行不通的,因为我想处理更大的字符集(并且不想浪费时间实现一些可能有我没想到的晦涩字符的问题)。

示例输入(无换行符):

http://maps.google.com/maps?q=kansas&hl=en&sll=42.358431,-71.059773&sspn=0.415552,0.718918&hnear=Kansas&t=m&z=7

示例输出(换行符如下所示):

GstikIiULcJSGEU2NWNTpyucSWUFENptYk4m5lD8RJl8l1CuspiuXiE9a07fUEAGM/tC7h0Vzus+
jAH6cT4Wtz2RUlBdGf8WtQxVDKZVOzKwi84eQh2kZT9T3KomlnPOu2owJ/2RAEvG+QuGem5UGw==

我的编码片段:

final Key key = new SecretKeySpec(seed.getBytes(), "DES");
final Cipher c = Cipher.getInstance("DES");
c.init(Cipher.ENCRYPT_MODE, key);
final byte[] encVal = c.doFinal(s.getBytes());
return new BASE64Encoder().encode(encVal);

最佳答案

只需执行 base64Str = base64Str.replaceAll("(?:\\r\\n|\\n\\r|\\n|\\r)", "")在编码字符串上。

当您尝试将其解码回字节时,它工作正常。我确实用随机生成的字节数组对它进行了多次测试。显然,解码过程只是忽略换行符,无论它们是否存在。我使用 com.sun.org.apache.xml.internal.security.utils.Base64 测试了这个“确认工作”其他编码器未测试。

关于java - 避免在加密和编码的 URL 字符串中换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com