我希望将Java字符串映射编码为单个Base64编码字符串。编码后的字符串将被传输到远程端点,可能会被不好的人篡改。因此,最坏的情况是出现无效的键值对,但不应该有任何其他安全风险。
示例:
Map<String,String> map = ...
String encoded = Base64.encode(map);
// somewhere else
Map<String,String> map = Base64.decode(encoded);
是的,必须使用Base64。不像这样,也不像那样,也不像其他任何一个。是否存在现成的轻量级解决方案(最好是单个实用程序类)?还是说我必须自己创建?
有没有更好的方法?
// marshalling
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(map);
oos.close();
String encoded = new String(Base64.encodeBase64(baos.toByteArray()));
// unmarshalling
byte[] decoded = Base64.decodeBase64(encoded.getBytes());
ByteArrayInputStream bais = new ByteArrayInputStream(decoded);
ObjectInputStream ois = new ObjectInputStream(bais);
map = (Map<String,String>) ois.readObject();
ois.close();
谢谢,