1 package org.mvnforum.util; 2 import java.security.MessageDigest ; 3 import java.security.NoSuchAlgorithmException ; 4 5 import sun.misc.BASE64Encoder; 6 7 57 58 61 public class MD5 { 62 static char [] carr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; 63 64 public static void main(String [] args) { 65 66 MessageDigest digest = null; 67 68 try { 69 digest = MessageDigest.getInstance("MD5"); 70 } catch (NoSuchAlgorithmException e) { 71 e.printStackTrace(); 73 } 74 75 try { 76 digest.update(args[0].getBytes("UTF-8")); 77 } catch (java.io.UnsupportedEncodingException ex) { 78 ex.printStackTrace(); 79 } 80 81 byte[] rawData = digest.digest(); 82 StringBuffer printable = new StringBuffer (); 83 84 System.out.print("PHPBB :"); 85 for(int i = 0; i<rawData.length; i++) 86 { 87 printable.append(carr[((rawData[i] & 0xF0) >> 4)]); 88 printable.append(carr[(rawData[i] & 0x0F)]); 89 } 90 91 System.out.println(printable); 92 System.out.println("MVNFORUM :" + getMD5_Base64(args[0])); 93 System.out.println("PHPBB->MVNFORUM :" + getBase64FromMD5(printable.toString())); 94 } 95 96 public static synchronized String getBase64FromMD5(String input) { 97 byte barr[] = new byte[16]; 98 int bcnt = 0; 99 for(int i=0; i<32; i+=2) 100 { 101 char c1 = input.charAt(i); 102 char c2 = input.charAt(i+1); 103 int i1 = intfromchar(c1); 104 int i2 = intfromchar(c2); 105 106 barr[bcnt] = 0; 107 barr[bcnt] |= (byte) ((i1 & 0x0F) << 4); 108 barr[bcnt] |= (byte) (i2 & 0x0F) ; 109 bcnt++; 110 } 111 112 BASE64Encoder bencoder = new BASE64Encoder(); 113 return bencoder.encode(barr); 114 } 115 116 117 public static synchronized String getMD5_Base64(String input) { 118 MessageDigest digest = null; 122 123 try { 124 digest = MessageDigest.getInstance("MD5"); 125 } catch (Exception ex) { 126 ex.printStackTrace(); 127 } 128 129 if (digest == null) return input; 130 131 try { 133 digest.update(input.getBytes("UTF-8")); 134 } catch (java.io.UnsupportedEncodingException ex) { 135 ex.printStackTrace(); 136 } 137 byte[] rawData = digest.digest(); 138 BASE64Encoder bencoder = new BASE64Encoder(); 139 return bencoder.encode(rawData); 140 } 141 142 static int intfromchar(char c) 143 { 144 char clower = Character.toLowerCase(c); 145 for(int i = 0; i<carr.length; i++) 146 { 147 if(clower == carr[i]) 148 return i; 149 } 150 151 return 0; 152 } 153 154 155 } 156 157 | Popular Tags |