分享

产生GUID的模块 - LiMac的编程阶梯

 accesine 2005-09-23

package com.sucem.util;

import java.net.*;
import java.security.*;
import java.util.*;

public class RandomGUID
    extends Object {
  public String valueBeforeMD5 = "";
  public String valueAfterMD5 = "";
  private static Random myRand;
  private static SecureRandom mySecureRand;

  static {
    mySecureRand = new SecureRandom();
    long secureInitializer = mySecureRand.nextLong();
    myRand = new Random(secureInitializer);
  }

  public RandomGUID() {
    getRandomGUID(false);
  }

  public RandomGUID(boolean secure) {
    getRandomGUID(secure);
  }

  private void getRandomGUID(boolean secure) {
    MessageDigest md5 = null;
    StringBuffer sbValueBeforeMD5 = new StringBuffer();
    try {
      md5 = MessageDigest.getInstance("MD5");
    }
    catch (NoSuchAlgorithmException e) {
      System.out.println("Error: " + e);
    }
    try {
      InetAddress id = InetAddress.getLocalHost();
      long time = System.currentTimeMillis();
      long rand = 0;
      if (secure) {
        rand = mySecureRand.nextLong();
      }
      else {
        rand = myRand.nextLong();
      }
      sbValueBeforeMD5.append(id.toString());
      //sbValueBeforeMD5.append(":");
      sbValueBeforeMD5.append(Long.toString(time));
      //sbValueBeforeMD5.append(":");
      sbValueBeforeMD5.append(Long.toString(rand));
      valueBeforeMD5 = sbValueBeforeMD5.toString();
      md5.update(valueBeforeMD5.getBytes());
      byte[] array = md5.digest();
      StringBuffer sb = new StringBuffer();
      for (int j = 0; j < array.length; ++j) {
        int b = array[j] & 0xFF;
        if (b < 0x10) {
          sb.append(‘0‘);
        }
        sb.append(Integer.toHexString(b));
      }
      valueAfterMD5 = sb.toString();
    }
    catch (UnknownHostException e) {
      System.out.println("Error:" + e);
    }
  }

  public String toString() {
    String raw = valueAfterMD5.toUpperCase();
    StringBuffer sb = new StringBuffer();
    sb.append(raw.substring(0, 8));
    //sb.append("-");
    sb.append(raw.substring(8, 12));
    //sb.append("-");
    sb.append(raw.substring(12, 16));
    //sb.append("-");
    sb.append(raw.substring(16, 20));
    //sb.append("-");
    sb.append(raw.substring(20));
    return sb.toString();
  }
}


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约