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);