我正在尝试实现一个简单的字符串编码器来混淆 URL 字符串的某些部分(以防止它们被用户弄乱)。我使用的代码几乎与JCA 指南中的示例相同,除了:
- 使用 DES(假设它比 AES 快一点,并且需要更小的密钥)和
- 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);