Özellikle veritabanında tutulmaması gereken veriler olduğunda ya da network üzerinde açık olarak gitmesini istemediğimiz veriler olduğu durumlarda tek taraflı olarak verileri şifreleriz. Örneğin girilen bir şifrenin doğru olup olmadığını kontrol ederken veritabanındaki şifrelenmiş metin ile kullanıcıdan gelen açık metini şifreleyerek karşılaştırırız. Böylece kullanıcının şifresini bilmeden şifresini doğrulayabiliriz. Bunun için kullanılabilecek en basit yöntemi aşağıda göstereceğim.
import java.security.MessageDigest;
import sun.misc.BASE64Encoder;
public final class Sifre {
public static String sifrele(String mesaj,String algoritma, String encoding){
MessageDigest md = null;
String hash = null;
try {
md = MessageDigest.getInstance(algoritma);
md.update(mesaj.getBytes(encoding));
md.update("TUZ".getBytes(encoding));
byte rawByte[] = md.digest();
hash = (new BASE64Encoder()).encode(rawByte);
} catch (Exception e) {
}
return hash;
}
public static void main(String args[]) throws Exception {
String sifre = "PASSWORD";
System.out.println(sifrele(sifre, "SHA", "UTF-8"));
System.out.println(sifrele(sifre, "MD5", "UTF-8"));
}
}
( java, hash, password, encrypt, salt, sha, md5 )