Kirjautuminen

Haku

Tehtävät

Koodit: Java: Yksinkertainen hash luokka

Kirjoittaja: focus

Kirjoitettu: 09.06.2004 – 09.06.2004

Tagit: koodi näytille, vinkki

Tässä iloksenne yksinkertainen staattinen luokka, joka tuottaa eritasoisia hasheja stringistä.

Crypt.java

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

/**
 * @author focus
 */
public final class Crypt {
	/**
	 * Static method to create 160 bit sha encoded string
	 * @param passwd string to be encoded
	 * @return base64 encoded string or null
	 */
	public static String cryptSha_160(String passwd) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("SHA-1");
			md.update(passwd.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			System.out.println("Unsupported algorithm");
			return null;
		} catch (UnsupportedEncodingException e) {
			System.out.println("Unsupported Encoding");
			return null;
		}
		byte byteArray[] = md.digest();
		String hash = (new BASE64Encoder()).encode(byteArray);

		return hash;
	}

	/**
	 * Static method to create 256 bit sha encoded string
	 * @param passwd string to be encoded
	 * @return base64 encoded string or null
	 */
	public static String cryptSha_256(String passwd) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("SHA-256");
			md.update(passwd.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			System.out.println("Unsupported algorithm");
			return null;
		} catch (UnsupportedEncodingException e) {
			System.out.println("Unsupported Encoding");
			return null;
		}
		byte byteArray[] = md.digest();
		String hash = (new BASE64Encoder()).encode(byteArray);

		return hash;
	}

	/**
	 * Static method to create 512 bit sha encoded string
	 * @param passwd string to be encoded
	 * @return base64 encoded string or null
	 */
	public static String cryptSha_512(String passwd) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("SHA-512");
			md.update(passwd.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			System.out.println("Unsupported algorithm");
			return null;
		} catch (UnsupportedEncodingException e) {
			System.out.println("Unsupported Encoding");
			return null;
		}
		byte byteArray[] = md.digest();
		String hash = (new BASE64Encoder()).encode(byteArray);

		return hash;
	}
	/**
	 * Static method to create 128 bit md5 encoded string
	 * @param passwd string to be encoded
	 * @return base64 encoded string or null
	 */
	public static String cryptMd5(String passwd) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("MD5");
			md.update(passwd.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			System.out.println("Unsupported algorithm");
			return null;
		} catch (UnsupportedEncodingException e) {
			System.out.println("Unsupported Encoding");
			return null;
		}
		byte byteArray[] = md.digest();
		String hash = (new BASE64Encoder()).encode(byteArray);

		return hash;
	}
}

Kommentit

BlueByte [10.06.2004 08:22:26]

#

hmm jännä

focus [10.06.2004 12:17:43]

#

Javadoc kommentit lisätty.

Sami [10.06.2004 16:54:14]

#

Kiva tietää mitä kaikkea javasta löytyykään... :)

focus [10.06.2004 21:58:34]

#

lainaus:

Kiva tietää mitä kaikkea javasta löytyykään... :)

Sehän javassa on tarkoitus, ettei tarvitse pyörää keksiä aina uudestaan... Saa keskittyä olennaiseen.

renni [13.06.2004 13:02:41]

#

Saman koodin ois saanu n. 1/4:aan kirjotettua, samat asiat toistuu. Eikä tässä ole mitään omaa koodia, pelkkä wrapperi jolla tehdään nimetyt metodit.

focus [15.06.2004 11:47:35]

#

lainaus:

Saman koodin ois saanu n. 1/4:aan kirjotettua, samat asiat toistuu. Eikä tässä ole mitään omaa koodia, pelkkä wrapperi jolla tehdään nimetyt metodit.

No toihan on staattinen luoka, ja helppo käyttää. Olishan tietysti kryptausalgoritmin voinut antaa argumenttinakin. Tämä nyt vain on kumminkin vinkki, eikä mikään koodaustaitoa esittelevä esimerkki. Luuletkos, että pomosi arvostaa kovasti, kun menet esittelemään itse tekemääsi base64 encoderia? Kun toimiva sellainen olisi ollut muutamassa sekunnissa lisättävissä kirjastoista.

tsuriga [16.06.2004 16:20:15]

#

Tässä oli varmaankin tarkoitus lähinnä tuoda esille moinen mahdollisuus, kuten Samin kommentti osoittikin. Ehkä jotain kommenttia voisi olla esim. vaikka MessageDigestin periaatteesta.

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta