0

我正在尝试对某些消息进行 base 64 编码,然后对消息进行 URL 编码,并将整个编码内容作为参数/值传递给查询字符串。 http://www.xxxxxx.com/xxxxx?query=base64urlencodedmessage

所以我想使用 base64 编码,然后使用 URL 编码。我看到 apache 为它提供了很好的库。

因此,在下面的 apache 方法中:

1) 如何查看我想使用哪种方法 1)、2) 和 3) 2) 在下面的方法 1 中,使用特定字符集进行编码意味着仅使用选定的字符集进行编码?1 和 3 和有什么不一样?哪个更安全???2)我首先使用base64,这是否意味着我将只获得字节数组作为输出,所以我应该只使用方法2?

URLCodec url=new URLCodec();

1) url.encode(str, charset);

2) url.encode(字节);

3) url.encode(str);

4

1 回答 1

0

这个测试应该很清楚

    String s1 = "test";
    System.out.println(s1);
    Base64 base64 = new Base64();
    String s2 = base64.encodeAsString(s1.getBytes());
    System.out.println(s2);
    URLCodec url = new URLCodec();
    String s3 = url.encode(s2);
    System.out.println(s3);
    s2 = url.decode(s3);
    System.out.println(s2);
    s1 = new String(base64.decode(s2));
    System.out.println(s1);

输出

test
dGVzdA==
dGVzdA%3D%3D
dGVzdA==
test

顺便说一句,您可以对标准 java.net.URLEncoder / java.net.URLDecoder 和 javax.bind.DatatypeConverted 类做同样的事情

于 2013-07-25T11:44:23.287 回答