Avatar billede billeschou Nybegynder
03. november 2000 - 13:49 Der er 9 kommentarer og
2 løsninger

Hvor gennemtænkt er Java?

Har jeg ret når jeg siger at det ikke er muligt at afkode den tekststreng der står i et JPasswordField? Det er jo temmelig upraktisk da man ofte vil bruge sådanne felter til at sammenligne sit password med værdier i en eller anden database.
Jeg kan godt se at det vil være lidt meningsløst at kryptere et password, hvis man kan dekryptere det umiddelbart bagefter (sikkerheden går jo fløjten), men alligevel...

Skal man virkelig lave en krypterings/dekrypteringsalgoritme for at kunne lave passwordchecking??
Det er da for plat...
Avatar billede limemedia Nybegynder
03. november 2000 - 13:56 #1
Hvis du gemmer passwords i krypteret form i databasen og verificerer mod dette... en krypteringsalgoritme der ikke kan dekrypteres er meget stærk :)
Avatar billede billeschou Nybegynder
03. november 2000 - 14:12 #2
En krypteringsalgoritme der ikke kan dekrypteres!? Man kan vel altid lave en dekrypteringsalgoritme ved at \"reversere\" krypteringsalgoritmen.

Med hensyn til at gemme passwords i krypteret form i databasen så understøtter eksempelvis Access dette delvist - så vidt jeg kan gennemskue viser Access passwordstrengen som en streng bestående af det nødvendige antal stjerner men selve indholdet af strengen er uændret.

Man kunne for eksempel lave en algoritme (simpel eller ej) til kryptering af passwords. Disse krypterede passwords gemmes så i Access manuelt. Loginproceduren i Javaapplikationen krypterer det indtastede og password og sammenligner med værdien i databasen.

Er det det du mener?
Avatar billede el_gnu Nybegynder
03. november 2000 - 14:19 #3
ljweb har helt ret!

Hvis du be\'r en bruger om at indtaste en kode i et JPasswordField og så vil sammenligne med en værdi gemt i en db, så er den sikreste måde, hvis du sammenligner begge i krypteret form.

Dvs. at værdien i db\'en skal være krypteret.
Når brugeren har indtastet en kode, så gør du sådan her:

if (dbPass.compareTo(krypterFunktion(new String(jpassfield.getPassword()))) == 0)
  //password er korrekt
else
  //password er forkert
Avatar billede el_gnu Nybegynder
03. november 2000 - 14:20 #4
billeschou => havde ikke set dit sidste indlæg
Avatar billede limemedia Nybegynder
03. november 2000 - 14:22 #5
du kan ikke reversere alle funktioner... hvis du fx tager en hash værdi på en streng kan der være flere resultater der generer samme password.

Hvis du i din database gemmer dit password som en krypteret text i en VARCHAR på det antal bit du har valgt kan du refere brugerens input mod dette gennem din krypteringsalgoritme...

krypteringsalgoritme($brugerinput) == $password_fra_db

vil kunne bruges... og du vil \"aldrig\" kunne reversere passwordet udfra databasen... Har en hacker først adgang til databasen har han alligevel fat i dine sourcefiler.
Avatar billede el_gnu Nybegynder
03. november 2000 - 14:25 #6
ljweb => hmm, String sammenligning med ==...
Avatar billede el_gnu Nybegynder
03. november 2000 - 14:26 #7
og $ foran variabel navne... du er da vist PHP koder normalt
Avatar billede billeschou Nybegynder
03. november 2000 - 14:26 #8
det er tanken der tæller :)
Avatar billede billeschou Nybegynder
03. november 2000 - 14:28 #9
Jeg kunne forestille at grunden til at der ikke findes en dekrypteringsfunktion som standard i Java er det sikkerhedsbrud den ville udgøre... egentlig en skam... venter spændt på Java 3 *lol*
Avatar billede limemedia Nybegynder
03. november 2000 - 14:57 #10
el_gnu >> rolig nu... jeg arbejder desværre ikke så meget i Java mere som jeg ønsker...
Avatar billede el_gnu Nybegynder
03. november 2000 - 15:12 #11
ikke ment som kritik :-)
jeg er selv i gang med PHP og glemmer ALTID $ foran variabelnavne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester