Har precis börjat titta på det där emd md5. I korta drag hur fungerar denna typ av kryptering egentligen? Om man skulle sätta in den på en skala, hur säker är den då?
Otroligt säker. Inte många som kan tyda den. Vad jag vet finns det inte ens något sätt att tyda det på. Så om man vill kolla om ett lösenord är rätt som är sparat med md5 så får man jämföra md5 och md5. Det finns t.ex. en API för programmerare för att göra till md5 men inte ifrån. använd den du.
md5 är en sk envägskryptering. det går att kryptera, men inte att "kryptera upp". För att se om någon har rätt lösenord krypterar man det användaren skrev in och jämför med det krypterade lösenordet.
på det sättet går det inte för någon att se vad användaren har för lösenord. har för mig att md5-summor brukar vara 128 bitar.
md5 är en sk envägskryptering. det går att kryptera, men inte att "kryptera upp". För att se om någon har rätt lösenord krypterar man det användaren skrev in och jämför med det krypterade lösenordet.
på det sättet går det inte för någon att se vad användaren har för lösenord. har för mig att md5-summor brukar vara 128 bitar.
Härmis.. :e
Däremot har jag för mej att det finns allt från 32-bitars till 128-bitars.
Det där med 32 tecken låter som om du menar ett program som gör en md5-checksumma (vilket är något helt annat än krypteringen som diskuteras ovan). md5-checksummor används ofta för att se till att garantera att en fil laddats ner korrekt över internet, genom att jämföra lokalt genererade md5-summor med summor från nedladdningssiten. Det är dock viktigt i detta fallet att inse att detta icke ger någon garanti för att filen ej modifierats, endast att överföringen gått bra. Om någon lyckas hacka den webserver filen ligger på kan man förstås byta ut md5-checksumman också. För att garantera att filen ej modifierats får man använda public/private key-kryptering, t ex pgp.
import java.security.*;
public class MD5Hash extends Object {
/**
* Private function to turn md5 result to 32 hex-digit string
*/
private static String asHex (byte hash[]) {
StringBuffer buf = new StringBuffer(hash.length * 2);
int i;
for (i = 0; i < hash.length; i++) {
if (((int) hash[i] & 0xff) < 0x10)
buf.append("0");
buf.append(Long.toString((int) hash[i] & 0xff, 16));
}
return buf.toString().toUpperCase();
}
/**
* Take a string and return its md5 hash as a hex digit string
*/
public static String hash(String arg)
{
return hash(arg.getBytes());
}
/**
* Non static version for VB
*/
public String doHash(String arg)
{
return hash(arg.getBytes());
}
/**
* Take a byte array and return its md5 hash as a hex digit string
*/
public static String hash(byte barray[])
{
String restring = "";
try{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(barray);
byte[] result = md.digest();
restring = asHex(result);
} catch (NoSuchAlgorithmException nsa){ }
return restring;
}
}