2010/01/25

Реализация MD5 через java.security.*;

Хотел бы привести пример реализации MD5 на Java. Использовалась стандартная библиотека java.security.*; и java.math.BigInteger;
package net.dreamx.md5;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {
 
 // исходное сообщение в hex
 static byte[] s = new byte[] {
        (byte)0x32, (byte)0x32, (byte)0x37, (byte)0x38, 
        (byte)0x31, (byte)0x37, (byte)0x31, (byte)0x34, 
        (byte)0x50, (byte)0xD8, (byte)0xE7, (byte)0xA4, 
        (byte)0x71, (byte)0x63, (byte)0x0E, (byte)0xD1
 };
 
 public static String md5(byte[] message) {
  
  MessageDigest md;
  try {
   md = MessageDigest.getInstance("MD5");
   md.update(message);
   BigInteger hash = new BigInteger(1, md.digest());
   return hash.toString(16);
  } catch (NoSuchAlgorithmException e) {
   e.printStackTrace();
   return "Error";
  }
 }
 
 public static void main (String args[]) {
  System.out.print(md5(s));
  System.exit(0);
 }
}