Este realmente me pareció el más óptimo para crear un resumen MD5. Lo encontré en www.gravatar.com.
<br /><span class="line-number"> 1</span> <span class="keyword-directive">import</span> java.io.UnsupportedEncodingException;<br /><br /><span class="line-number"> 2</span> <span class="keyword-directive">import</span> java.security.MessageDigest;<br /><span class="line-number"> 3</span> <span class="keyword-directive">import</span> java.security.NoSuchAlgorithmException;<br /><span class="line-number"> 4</span> <br /><span class="line-number"> 5</span> <span class="keyword-directive">public</span> <span class="keyword-directive">class</span> MD5Util {<br /><br /><span class="line-number"> 6</span> <br /><span class="line-number"> 7</span> <span class="keyword-directive">public</span> <span class="keyword-directive">static</span> String hex(<span class="keyword-directive">byte</span>[] array) {<br /><span class="line-number"> 8</span> StringBuffer sb = <span class="keyword-directive">new</span> StringBuffer();<br /><br /><span class="line-number"> 9</span> <span class="keyword-directive">for</span> (<span class="keyword-directive">int</span> i = 0; i < array.length; ++i) {<br /><span class="line-number">10</span> sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));<br /><span class="line-number">11</span> }<br /><br /><span class="line-number">12</span> <span class="keyword-directive">return</span> sb.toString();<br /><span class="line-number">13</span> }<br /><span class="line-number">14</span> <br /><span class="line-number">15</span> <span class="keyword-directive">public</span> <span class="keyword-directive">static</span> String md5Hex(String message) {<br /><br /><span class="line-number">16</span> <span class="keyword-directive">try</span> {<br /><span class="line-number">17</span> MessageDigest md =<br /><span class="line-number">18</span> MessageDigest.getInstance(<span class="character">"</span><span class="character">MD5</span><span class="character">"</span>);<br /><span class="line-number">19</span> <span class="keyword-directive">return</span> hex(md.digest(message.getBytes(<span class="character">"</span><span class="character">CP1252</span><span class="character">"</span>)));<br /><br /><span class="line-number">20</span> } <span class="keyword-directive">catch</span> (NoSuchAlgorithmException e) {<br /><span class="line-number">21</span> } <span class="keyword-directive">catch</span> (UnsupportedEncodingException e) {<br /><span class="line-number">22</span> }<br /><span class="line-number">23</span> <span class="keyword-directive">return</span> <span class="keyword-directive">null</span>;<br /><br /><span class="line-number">24</span> }<br /><span class="line-number">25</span> }<br /><span class="line-number">26</span> <br /><span class="line-number">27</span> <br />