0

私はJavaが初めてで、文字列を暗号化/復号化するためのユーティリティAPIを作成しようとしています. コントローラーとリクエストのマッピングが機能しており、暗号化/復号化メソッドが機能しています。

私が直面している問題は、スラッシュ ('/') を含む文字列を復号化することです。URL でエンコードされていないままにしておくと ( などhttp://localhost:8080/api/package/util/decrypt/oJfTtchpM9WC/4Oqpu7FZQ==)、URL ルーティングが中断されます (これは明らかな理由です)。

URL エンコードすると ( などhttp://localhost:8080/api/package/util/decrypt/oJfTtchpM9WC%2F4Oqpu7FZQ==)、パス変数の値は空になります。

http://localhost:8080/api/package/util/decrypt/oJfTtchpM9WCまた、 (スラッシュなし) が正常に機能することにも注意してください。

'%' をパス変数に入れるたびに、応答として空白のページが表示されるようです。メソッドにヒットしません。例外をスローしません (私が見つけることができる - 繰り返しますが、私はまだ環境を学んでいます)

次のように示されるパス変数のみを出力するように復号化メソッドを簡素化しましたdata

@RequestMapping(value = "/util/decrypt/{data}", method = RequestMethod.GET)
@ResponseBody
public String decrypt(HttpServletResponse httpResponse,
        @PathVariable String data) throws Exception 
{
    return data;
    //    return URLDecoder.decode(data, "UTF-8");
}

何が起こっているのか、どうすればこれを機能させることができるのか、誰かが私に説明できますか?

どうもありがとう!!

4

1 に答える 1

0

関数encodeBase64URLSafeString(vs単にencodeBase64String)を使用するように暗号化メソッドを更新し、データを標準のリクエストパラメーターとして渡すように変更しました(つまり、?data = string)。これで問題は解決しました。

base64 アルゴリズムの URL セーフ バージョンを使用してバイナリ データをエンコードしますが、出力をチャンクしません。URL セーフのバリエーションでは、+ および / 文字の代わりに - および _ が生成されます。注: パディングは追加されません。

于 2013-07-10T23:07:19.367 に答える