Package com.liusoft.dlog4j.upgrade

Source Code of com.liusoft.dlog4j.upgrade.StringUtils

/*
*  StringUtils.java
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU Library General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*  Author: Winter Lau
*  http://dlog4j.sourceforge.net
*/
package com.liusoft.dlog4j.upgrade;

import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class StringUtils extends org.apache.commons.lang.StringUtils{

  /**
   * ���ϵͳ�д��ھɰ汾�����ݣ����ֵ�����޸ģ������ڽ������������ʱ�����
   */
    private static final String PASSWORD_CRYPT_KEY = "__jDlog_";
  private final static String DES = "DES";
 
  /**
   * �ж��Dz���һ���Ϸ��ĵ����ʼ���ַ
   * @param email
   * @return
   */
  public static boolean isEmail(String email){
    if(email==null)
      return false;
    email = email.trim();
    if(email.indexOf(' ')!=-1)
      return false;
   
    int idx = email.indexOf('@');
    if(idx==0 || (idx+1)==email.length())
      return false;
    if(email.indexOf('@', idx+1)!=-1)
      return false;
    return true;
    /*
    Pattern emailer;
    if(emailer==null){
      String check = "^([a-z0-9A-Z]+[-|\\._]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
      emailer = Pattern.compile(check);
    }
      Matcher matcher = emailer.matcher(email);
      return matcher.matches();
    */
  }
  /**
   * ����
   * @param src ����Դ
   * @param key ��Կ�����ȱ�����8�ı���
   * @return    ���ؼ��ܺ������
   * @throws Exception
   */
  public static byte[] encrypt(byte[] src, byte[] key)
    throws Exception {
    //    DES�㷨Ҫ����һ�������ε������Դ
    SecureRandom sr = new SecureRandom();
    // ��ԭʼ�ܳ����ݴ���DESKeySpec����
    DESKeySpec dks = new DESKeySpec(key);
    // ����һ���ܳ׹�����Ȼ��������DESKeySpecת����
    // һ��SecretKey����
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
    SecretKey securekey = keyFactory.generateSecret(dks);
    // Cipher����ʵ����ɼ��ܲ���
    Cipher cipher = Cipher.getInstance(DES);
    // ���ܳ׳�ʼ��Cipher����
    cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
    // ���ڣ���ȡ���ݲ�����
    // ��ʽִ�м��ܲ���
    return cipher.doFinal(src);
  }
 
  /**
   * ����
   * @param src  ����Դ
   * @param key  ��Կ�����ȱ�����8�ı���
   * @return    ���ؽ��ܺ��ԭʼ����
   * @throws Exception
   */
  public static byte[] decrypt(byte[] src, byte[] key)
    throws Exception {
    //    DES�㷨Ҫ����һ�������ε������Դ
    SecureRandom sr = new SecureRandom();
    // ��ԭʼ�ܳ����ݴ���һ��DESKeySpec����
    DESKeySpec dks = new DESKeySpec(key);
    // ����һ���ܳ׹�����Ȼ��������DESKeySpec����ת����
    // һ��SecretKey����
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
    SecretKey securekey = keyFactory.generateSecret(dks);
    // Cipher����ʵ����ɽ��ܲ���
    Cipher cipher = Cipher.getInstance(DES);
    // ���ܳ׳�ʼ��Cipher����
    cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
    // ���ڣ���ȡ���ݲ�����
    // ��ʽִ�н��ܲ���
    return cipher.doFinal(src);
  }
    /**
     * �������
     * @param data
     * @return
     * @throws Exception
     */
    public final static String decrypt(String data){
        try {
            return new String(decrypt(hex2byte(data.getBytes()),PASSWORD_CRYPT_KEY.getBytes()));
        }catch(Exception e) {
        }
        return null;
    }
    /**
     * �������
     * @param password
     * @return
     * @throws Exception
     */
    public final static String encrypt(String password){
        try {
            return byte2hex(encrypt(password.getBytes(),PASSWORD_CRYPT_KEY.getBytes()));
        }catch(Exception e) {
        }
        return null;
    }
  /**
   * ������ת�ַ���
   * @param b
   * @return
   */
    public static String byte2hex(byte[] b) {
    String hs = "";
    String stmp = "";
    for (int n = 0; n < b.length; n++) {
      stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
      if (stmp.length() == 1)
        hs = hs + "0" + stmp;
      else
        hs = hs + stmp;
    }
    return hs.toUpperCase();
  }
   
    public static byte[] hex2byte(byte[] b) {
        if((b.length%2)!=0)
            throw new IllegalArgumentException("���Ȳ���ż��");
    byte[] b2 = new byte[b.length/2];
    for (int n = 0; n < b.length; n+=2) {
        String item = new String(b,n,2);
        b2[n/2] = (byte)Integer.parseInt(item,16);
    }
        return b2;
    }
   
    /**
     * ��Сд�޹ص��ַ����滻����
     * @param str
     * @param src
     * @param obj
     * @return
     */
    public static String replaceIgnoreCase(String str, String src, String obj){
      String l_str = str.toLowerCase();
      String l_src = src.toLowerCase();
      int fromIdx = 0;
      StringBuffer result = new StringBuffer();
      do{
        int idx = l_str.indexOf(l_src, fromIdx);
        if(idx==-1)
          break;
        result.append(str.substring(fromIdx, idx));
        result.append(obj);
        fromIdx = idx + src.length();
      }while(true);
      result.append(str.substring(fromIdx));
      return result.toString();
    }
 
    public static void main(String[] args) {
        String pwd = decrypt("B5947D180FF18B990EB65C9107FBC8FB");
        System.out.println("pwd="+pwd);
       
    }
}
TOP

Related Classes of com.liusoft.dlog4j.upgrade.StringUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.