`
baobaoupup
  • 浏览: 470866 次
文章分类
社区版块
存档分类
最新评论

一点关于MD5计算的封装

 
阅读更多
MD5 是message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?MD5是用于对信息生成信息摘要(即散列码)的算法之一。不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的<wbr style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"><span style="color:#003366; line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)">。关于</span><span style="line-height:22px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245); color:rgb(0,51,102)">信息摘要</span><span style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245); color:rgb(0,51,102)">和</span><span style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245); color:rgb(255,153,0)">散列码</span><span style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245); color:rgb(0,51,102)">请参照《</span><a title="阅读全文" target="_blank" href="http://hubingforever.blog.163.com/blog/static/17104057920118981219705/" style="color:rgb(245,149,19); line-height:25px; text-decoration:initial; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245); white-space:nowrap">数字证书简介</a><span style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245); color:rgb(0,51,102)">》</span> <div style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"> <span style="font-family:Arial,Helvetica,simsun,u5b8bu4f53"><span style="color:#003366">关于</span><span style="color:#ff00ff">MD5</span><span style="color:#003366">用于验证文件发放和收方是否一致的大概流程如</span><strong>图1</strong><span style="color:#003366">所示</span></span> </div> <div style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"> <span style="font-family:Arial,Helvetica,simsun,u5b8bu4f53"><strong>图1</strong><br></span> <div> <div><img alt="一个计算MD5的工具类 - hubingforever - 民主与科学" src="http://img.my.csdn.net/uploads/201212/23/1356265406_5700.jpg" width="517" height="389" style="border:0px; max-width:100%; margin:0px 10px 0px 0px"></div> 以下是对于MD5计算的一个简单包装类</div> </div> <div style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"> MD5Util.java文件</div> <div style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"> <pre class="prettyprint" style="padding:2px; border:1px solid rgb(136,136,136)"><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p><div> <span class="kwd" style="color:rgb(0,0,136)">package</span><span class="pln"> edu</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">edut</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">robin</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">utils</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">File</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">FileInputStream</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">IOException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">InputStream</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">UnsupportedEncodingException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">security</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">MessageDigest</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> android</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">util</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Log</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> </div><div> <span class="kwd" style="color:rgb(0,0,136)">public</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">class</span><span class="pln"> MD5Util</span> </div><div><span class="pun" style="color:rgb(102,102,0)">{</span></div><div> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">private</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> encodingAlgorithm</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="str" style="color:rgb(0,136,0)">"MD5"</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div><span class="pln"> </span></div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">public</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">final</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">byte</span><span class="pun" style="color:rgb(102,102,0)">[]</span><span class="pln"> md5sum</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="kwd" style="color:rgb(0,0,136)">byte</span><span class="pun" style="color:rgb(102,102,0)">[]</span><span class="pln"> data</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">if</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">data </span><span class="pun" style="color:rgb(102,102,0)">==</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">||</span><span class="pln"> data</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">length </span><span class="pun" style="color:rgb(102,102,0)">==</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">){</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">return</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">try</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">MessageDigest</span><span class="pln"> mdTemp </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">MessageDigest</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getInstance</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">encodingAlgorithm</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> mdTemp</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">update</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">data</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">return</span><span class="pln"> mdTemp</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">digest</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div><span class="pln"> </span></div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">catch</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">Exception</span><span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div><span class="pln"> </span></div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">return</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div><span class="pln"> </span></div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> convertToHexString</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="kwd" style="color:rgb(0,0,136)">byte</span><span class="pln"> data</span><span class="pun" style="color:rgb(102,102,0)">[])</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">StringBuffer</span><span class="pln"> strBuffer </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">new</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">StringBuffer</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">for</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="kwd" style="color:rgb(0,0,136)">int</span><span class="pln"> i </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">;</span><span class="pln"> i </span><span class="pun" style="color:rgb(102,102,0)">&lt;</span><span class="pln"> data</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">length</span><span class="pun" style="color:rgb(102,102,0)">;</span><span class="pln"> i</span><span class="pun" style="color:rgb(102,102,0)">++)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> strBuffer</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">append</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">Integer</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">toHexString</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="lit" style="color:rgb(0,102,102)">0xff</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">&amp;</span><span class="pln"> data</span><span class="pun" style="color:rgb(102,102,0)">[</span><span class="pln">i</span><span class="pun" style="color:rgb(102,102,0)">]));</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">return</span><span class="pln"> strBuffer</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">toString</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">public</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">byte</span><span class="pun" style="color:rgb(102,102,0)">[]</span><span class="pln"> md5sum</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">File</span><span class="pln"> file</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">InputStream</span><span class="pln"> fis </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">byte</span><span class="pun" style="color:rgb(102,102,0)">[]</span><span class="pln"> buffer </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">new</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">byte</span><span class="pun" style="color:rgb(102,102,0)">[</span><span class="lit" style="color:rgb(0,102,102)">1024</span><span class="pun" style="color:rgb(102,102,0)">];</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">int</span><span class="pln"> numRead </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">MessageDigest</span><span class="pln"> md5</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">try</span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> fis </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">new</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">FileInputStream</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">file</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> md5 </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">MessageDigest</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getInstance</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">encodingAlgorithm</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">while</span><span class="pun" style="color:rgb(102,102,0)">((</span><span class="pln">numRead</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln">fis</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">read</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">buffer</span><span class="pun" style="color:rgb(102,102,0)">))</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">&gt;</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> md5</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">update</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">buffer</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="pln">numRead</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">return</span><span class="pln"> md5</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">digest</span><span class="pun" style="color:rgb(102,102,0)">();</span><span class="pln"> </span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">catch</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">Exception</span><span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">printStackTrace</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">return</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">finally</span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">if</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">fis </span><span class="pun" style="color:rgb(102,102,0)">!=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">){</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">try</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> fis</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">close</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">catch</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">IOException</span><span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">printStackTrace</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div><span class="pun" style="color:rgb(102,102,0)">}</span></div><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p></pre> </div> <div style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"> 关于<span style="color:rgb(255,0,255)">MessageDigest</span>的更多内容请参考《<a title="阅读全文" target="_blank" href="http://hubingforever.blog.163.com/blog/static/171040579201210781650340/" style="color:rgb(245,149,19); text-decoration:initial; white-space:nowrap">MessageDigest简介</a><a title="阅读全文" target="_blank" href="http://hubingforever.blog.163.com/blog/static/171040579201210781650340/" style="color:rgb(245,149,19); text-decoration:initial; white-space:nowrap"><span style="color:#000000">》</span></a> </div> <div style="line-height:25px; font-family:Arial,Helvetica,simsun,u5b8bu4f53; font-size:14px; background-color:rgb(245,245,245)"> 结束</div> </wbr>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics