Wie zum codieren eines Map<String,String> als Base64-string?

ich wie codieren Sie eine java-map mit strings als eine einzelne base-64-codierte Zeichenfolge. Die codierte Zeichenfolge übermittelt werden, die zu einem remote-Endpunkt und vielleicht manipuliert werden, indem eine nicht nette person. Also das Schlimmste, was passieren sollte sind invaild key-value-Tupeln, aber sollte nicht zu bringen, alle anderen Sicherheitsrisiken beiseite.

Beispiel:

Map<String,String> map = ...
String encoded = Base64.encode(map);

//somewhere else
Map<String,String> map = Base64.decode(encoded);

Ja, muss Base64. Nicht wie, dass oder dass oder eine andere. Gibt es eine einfache Lösung (Single-Utils-Klasse bevorzugt) gibt? Oder muss ich meine eigenen erstellen?

Nichts besseres ein, als diese?

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

Dank,

  • Was ist die funktionale Anforderung? I. e. was brauchen Sie für diese? Nur dann können wir beurteilen, über den besten Ansatz.
  • meine Hauptanforderungen sind: - codierte string sollte so kurz wie möglich und enthalten nur lateinische Zeichen oder Zeichen aus dem base64-alphabet (nicht mein nennen). es gibt keine andere reqs.
InformationsquelleAutor Chris | 2010-02-08
Schreibe einen Kommentar