Android Hilfe bei Passwort einlesen

LStrike

Mitglied
Moin moin,

das Thema Sicherheit geht bei mir weiter. Ich habe eine Frag zu folgendem Sachverhalt:

Ich lese aus meiner GUI über ein EditText Feld ein Passwort wie folgt ein:
Java:
byte[] passwort = passwortFeld.getText().toString().getBytes();
Ich bin mir nicht ganz im Klaren, was dort intern passiert.

passwortFeld.getText() und getBytes() ist soweit klar, aber was macht das toString() genau?
Wird dort intern ein String zwischengespeichert, der dann bis die GarbageCollection kommt im Arbeitsspeicher liegt?

Gruß LStike
 

Eldorado

Bekanntes Mitglied
Das toString kannst du grad weglassen, das bewirkt nichts: String#toString
Edit: Ich gehe jetzt mal davon aus, dass getText deines Textfelds einen String returned, da das bei einem TextField ja so üblich ist.(Aber ich kenne natürlich dein Textfeld nicht)
 

LStrike

Mitglied
Leider kann ich das toString() nicht weglassen, da die getText()-Methode einen Wert vom Type Editable zurück gibt.
Diesen Wert kann ich nicht direkt in ein byte[] überführen.


Zur Ergänzung:

Java:
passwortFeld = (EditText) findViewById(R.id.passwortFeldSender);
.....
byte[] passwort = passwortFeld.getText().toString().getBytes();
 

eRaaaa

Top Contributor
Mhm, bin mir auch nicht sicher wie das in Android best practice ist, aber ich würde das toString auch weglassen in dem Fall! Weiss jetzt aber auch nichts genaueres über die GC bei Android ;(
Aber der Vorteil von dem Editable ist ja eben, dass du es danach wieder ändern kannst!
D.h. ich würde mir das Editable holen, dann irgendwie das char-Array holen welches dahinter steckt(bzw eben charAt, nicht den String!!) und dieses mit dem eigentlichen Passwort vergleichen. Hinterher direkt wieder das Editable/char-Array durch clear() "löschen"
So bleibt dann auch kein String-Objekt im Speicher, sondern eben nur das Editable bzw. das char-Array, welches du dann ja aber verändert hättest.

Von wo hast du denn den Code dafür? Oder haste dir den selbst überlegt gehabt?
 

hemeroc

Bekanntes Mitglied
Editables bieten die Funktionen
Java:
getChars(int start, int end, char[] dest, int destoff)
// Exactly like String.getChars(): copy chars start through end - 1 from this CharSequence into dest beginning at offset destoff.
und
Java:
subSequence(int start, int end)
// Returns a CharSequence from the start index (inclusive) to the end index (exclusive) of this sequence.
Mit beiden lässt sich dein Problem schöner lösen.
LG Hemeroc
 

LStrike

Mitglied
Der Code stammt von mir.
Das Passwort, welches dort Eingegeben wird, wird für eine AES-Verschlüsselung genutzt.
Ich werde dann nochmal schauen, ob ich an die einzelnen Elemente des Editable herankomme.

[Edit]:
Zu langsam ;)

Das sieht doch gut aus. Werde es mal versuchen so umzusetzen. Danke.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Android Kotlin: Bitte dringend um Hilfe Android & Cross-Platform Mobile Apps 2
Mo1234 Plattform in einer App. Bitte um Hilfe! Android & Cross-Platform Mobile Apps 8
M Hilfe bei App Programmierung für Android Android & Cross-Platform Mobile Apps 1
A Fehlermeldung, brauche Hilfe. Android & Cross-Platform Mobile Apps 2
D Hilfe! es geht um Buttons und Sounds Android & Cross-Platform Mobile Apps 14
P Brauche Hilfe bei Code Snippet Android & Cross-Platform Mobile Apps 10
N Android Hilfe string to float geht nicht... Android & Cross-Platform Mobile Apps 4
M Telefonbuch in J2ME programmieren HILFE! Android & Cross-Platform Mobile Apps 34
R Fehlersuche - brauche eure Hilfe Android & Cross-Platform Mobile Apps 10
L Android content URI Datei einlesen Android & Cross-Platform Mobile Apps 9
S Android Datei aus dem Netz einlesen Android & Cross-Platform Mobile Apps 6
L Android Android exportierte XML einlesen Android & Cross-Platform Mobile Apps 2
S Textdatei in ListView einlesen Tutorial gesucht!? Android & Cross-Platform Mobile Apps 3
S Fehler beim Textdatei einlesen!? Android & Cross-Platform Mobile Apps 7
L Android Einlesen und rausschreiben von Daten auf SD Android & Cross-Platform Mobile Apps 3
W Videofile einlesen Android & Cross-Platform Mobile Apps 16
B Textfile Zeilenweise einlesen Android & Cross-Platform Mobile Apps 4

Ähnliche Java Themen


Oben