WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 14.02.2003, 10:57   #1
gerngroh
Jr. Member
 
Registriert seit: 22.12.2001
Alter: 43
Beiträge: 65


Standard Kryptographie, Java, HTML

Hallo!

Folgendes Problem:

Ich schreib grad eine Webanwendung und bin dabei gezwungen gewisse Daten in Hidden-Formularfeldern in der JSP-Seite zu speichern.

Der User soll gewisse Dinge allerdings nicht im Klartext lesen können also werden diese gewissen Daten verschlüsselt.

Das verschlüsseln erfolgt mit folgender Funktion:
Zitat:
public byte[] encrypt(byte[] bKey, byte[] bData)
{
Cipher c = null;
byte[] encryptedbytes = bData;

try
{
SecretKey desKey = getKey(bKey);
c = Cipher.getInstance("DES/ECB/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, desKey);
encryptedbytes = c.doFinal(bData);
}
........
return encryptedbytes;
}
das entschlüsseln mittels folgender Funktion:
Zitat:
public byte[] decrypt(byte[] bKey, byte[] bData)
{
Cipher c = null;
byte[] decryptedbytes = bData;

try
{
SecretKey desKey = getKey(bKey);
c = Cipher.getInstance("DES/ECB/PKCS5Padding");
c.init(Cipher.DECRYPT_MODE, desKey);
decryptedbytes = c.doFinal(bData);
}
.....
return decryptedbytes;
}
Wobei für bKey immer ein Passwort als Schlüssel angegeben wird, das ich mittels passwort.getBytes(); in die einzelnen Bytes zerlege.

Funktioniert alles einwandfrei, allerdings liefert die verschlüsselung immer nur Wirre Zeichen (ok das ist ja sinn und zweck) und ich bin mir nicht sicher ob dass dann in einer HTML-Seite ein Problem darstellt.

Also um meine Frage nochmal auszuformulieren:

Wie kann ich die Daten verschlüsseln wobei der verschlüsselte String nur A-Za-z0-9 enthalten sollte, oder wie kann den erhaltenen String in einen String ohne Sonderzeichen umwandeln?

Danke
Tschüss!
gerngroh ist offline   Mit Zitat antworten
Alt 14.02.2003, 11:51   #2
Irmi
Senior Member
 
Registriert seit: 15.09.2002
Beiträge: 141


Standard

Hallo,

Also mit den Javabibliotheken kenn ich mich zu wenig aus, und unser Javaprogrammierer ist schon im Wochenende

Aber in PHP gibt es die Funktion "urlencode". Damit wird jeder String, auch wenn noch so viele Sonderzeichen enthalten sind, so aufbereitet, dass er über die Adressleiste verschickt werden kann.
Es gibt auch "urldecode", aber das ist gar nicht mehr notwendig nach dem Versand, da das automatisch decodiert wird.

Vielleicht gibt es in Java ja eine vergleichbare Funktion, wäre denkbar...
____________________________________
Liebe Grüße,
Christian
Irmi ist offline   Mit Zitat antworten
Alt 14.02.2003, 12:09   #3
gerngroh
Jr. Member
 
Registriert seit: 22.12.2001
Alter: 43
Beiträge: 65


Standard

erstmal danke für die schnelle antwort.

Auch unter Java gibts sowas, in der Klasse javax.servlet.http.HttpServletResponse gibts die Funktion encodeURL(String) die das macht.

Ich bin da allerdings noch auf einen anderen Ansatz gestoßen.


bei dem zu verschlüsselnden String handelt es sich um das passwort.
(Der Hintergrund warum ich das PW im hidden-field merken muss is egal, ist so)

ich hab jetzt noch auf einigen PHP-Seiten rumgestöbert und bin darauf gestoßen, dass man auch einen Hash-Wert aus Name+Passwort berechnen kann welchen ich dann im Hidden-Field speichern könnte (Hash-Wert-Berechnung ist irreversibel und angeblich soll man das bei Name und Passwort per Hash machen)

Wenn dann wieder Name+PW angegeben wird errechne ich nochmal den Hash und vergleiche ihn per String.equals() mit dem Hash im Hidden-Field, wenn das gleich ist, dann OK, sonst nicht OK.

1. Funktioniert das so, oder hab ich da wo einen Denkfehler?

2. Unter PHP gibts Unix-Crypt für die Berechnung vom Hexwert, wie mach ich das mit Java, wo es kein crypt gibt?

Tschüss!
gerngroh ist offline   Mit Zitat antworten
Alt 18.02.2003, 08:40   #4
gerngroh
Jr. Member
 
Registriert seit: 22.12.2001
Alter: 43
Beiträge: 65


Standard

Soda, hab jetzt schon eine Lösung gefunden.

encodeURL funktioniert nicht, die Sonderzeichen werden dabei unverändert an den Browser geschickt.

Ich hab jetzt eine Funktion geschrieben die jedes Byte in einen Hex-String umwandelt und erhalte damit einen String wie A46D8C...

Da ich jetzt nur mittels MD5-Algorithmus eine Prüfsumme von Name+Passwort errechne brauch ich den Hex-String auch nicht wieder zurück konvertieren.

Einfach die Prüfsumme in der DB speichern und bei der Anmeldung neu berechnen, wenns zusammenstimmt ok, wenn nicht fliegt er.
gerngroh ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:57 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag