MD5不可逆加密的简单尝试

package com.bwjf.webapp.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
  /**
   * 将数据转换为16进制形式的加密方法
   * @author Administrator
   *
   */
public class HexMd5 {
   public final static String[] HEXDIGIST={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
  
   /**1.将数据转换为字节形式并进行加密后转换为字节数组形式
    * 2.将字节数组进行遍历,每一个遍历的数据转换为对应的16进制形式,并添加都字符串中进行返回
    * 3.字节转换为16进制形式的方法
    *
    */
  
   /**
    * 方法1:字节转对应的16进制字符串方法,并返回字符串
    */
    public static String byteToHex(byte b){
     int n = b;
     if(n<0){
      n+=256;
     }
     int D1 = n/16;
     int D2 = n%16;
     return HEXDIGIST[D1]+HEXDIGIST[D2];
    }
   
    /**
     * 方法2:将字节数组进行遍历并调用1方法,处理得到字符串添加到StringBuilder字符串中,并返回字符串
     */
    public static String byteArrayToHex(byte[] b){
     byte[] bs = b;
     StringBuilder sb = new StringBuilder();
     for(byte bb:bs){
      sb.append(byteToHex(bb));
     }
     return sb.toString();
    }
   
    /**
     * 方法2并列,形式为数字字符串形式
     */
     public static String byteToNum(byte b){
      int Reg = b;
      if(Reg<0){
       Reg+=256;
      }
      return String.valueOf(Reg);
     }
    /**
     * 方法3:将源数据进行MD5处理,并结合以上方法进行数据处理
     */
    public static String Md5Encode(String ss){
     String resultString;//定义一个结果字符串
     try {
   MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5加密类实例
   md.update(ss.getBytes("utf-8"));//将传入的字符串以utf-8字符集规则转换为字节形式,并进行MD5处理
   resultString = byteArrayToHex(md.digest());   
   return resultString;//返回处理结果  
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
     return "";
    }
   
    /**
     * 测试
     */
   
  
    public static void main(String[] args) {
   System.out.println(HexMd5.Md5Encode("89887887878"));
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值