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; } }
hmm jännä
Javadoc kommentit lisätty.
Kiva tietää mitä kaikkea javasta löytyykään... :)
lainaus:
Kiva tietää mitä kaikkea javasta löytyykään... :)
Sehän javassa on tarkoitus, ettei tarvitse pyörää keksiä aina uudestaan... Saa keskittyä olennaiseen.
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.
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.
Tässä oli varmaankin tarkoitus lähinnä tuoda esille moinen mahdollisuus, kuten Samin kommentti osoittikin. Ehkä jotain kommenttia voisi olla esim. vaikka MessageDigestin periaatteesta.