MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 征集数据加密的方式,该怎么解决

征集数据加密的方式,该怎么解决(2)

www.MyException.Cn  网友分享于:2013-01-13  浏览:32次

------解决方案--------------------
package netcom.MD5;
import java.security.*;
import java.security.spec.*;
import java.math.*;
public class MD5{
char hexChars[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
public String convert32(String s){
try{
byte[] bytes=s.getBytes();
MessageDigest md=MessageDigest.getInstance("MD5");
md.update(bytes);
bytes=md.digest();
int j=bytes.length;
char[] chars=new char[j*2];
int k=0;
for(int i=0;i<bytes.length;i++){
byte b=bytes[i];
chars[k++]=hexChars[b>>>4&0xf];
chars[k++]=hexChars[b&0xf];
}
return new String(chars);
}
catch(Exception e){
return null;
}
}
public String convert16(String s){
String ns=convert32(s).substring(8,24);
return ns;
}
}


这种方法是加密成16位数字+字母组合。


package netcom.MD5;
import java.security.MessageDigest;
public class KL{ 
//可逆的加密算法 
public static String jiami(String inStr){ 
//String s = new String(inStr); 
char[] a = inStr.toCharArray(); 
for (int i = 0;i <a.length;i++) { 
a[i] = (char)(a[i]^'~'); 

String s=new String(a); 
return s; 

public static String jiemi(String inStr){ 
char[] a=inStr.toCharArray(); 
for (int i = 0;i <a.length;i++) { 
a[i]= (char)(a[i]^'~'); 

String k=new String(a); 
return k; 

}
------解决方案--------------------
探讨
String pwd=(new MD5()).convert16(user.getSuPassword());
MD5 如果在java中进行引应用的话,需要下载jar包啊
这个加密方式是单向的还是双向的

------解决方案--------------------
Java code
package com.winnet.encrypt;
/**
 * 数据加密类 支持SHA-1,SHA-2(SHA-256,SHA-384,SHA-512),MD2,MD5 是对java自带加密算法的二次封装
 */
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Encrypt
{

    public Encrypt()
    {
    }

    /**
     * MD2加密算法
     * 
     * @param plantText
     *            需要加密的字符串
     * @return String型 加密后的字符串
     */
    public String GetMD2EncString(String plantText)
    {
        return this.GetEncString(plantText, "MD2");
    }

    /**
     * MD5加密算法
     * 
     * @param plantText
     *            需要加密的字符串
     * @return String型 加密后的字符串
     */
    public String GetMD5EncString(String plantText)
    {
        return this.GetEncString(plantText, "MD5");
    }

    /**
     * SHA-1加密算法
     * 
     * @param plantText
     *            需要加密的字符串
     * @return String型 加密后的字符串
     */
    public String GetSHA1EncString(String plantText)
    {
        return this.GetEncString(plantText, "SHA-1");
    }

    /**
     * SHA-256加密算法
     * 
     * @param plantText
     *            需要加密的字符串
     * @return String型 加密后的字符串
     */
    public String GetSHA256EncString(String plantText)
    {
        return this.GetEncString(plantText, "SHA-256");
    }

    /**
     * SHA-384加密算法
     * 
     * @param plantText
     *            需要加密的字符串
     * @return String型 加密后的字符串
     */
    public String GetSHA384EncString(String plantText)
    {
        return this.GetEncString(plantText, "SHA-384");
    }

    /**
     * SHA-512加密算法
     * 
     * @param plantText
     *            需要加密的字符串
     * @return String型 加密后的字符串
     */
    public String GetSHA512EncString(String plantText)
    {
        return this.GetEncString(plantText, "SHA-512");
    }

    /**
     * 数据加密算法
     * 
     * @param plainText
     *            加密字符串
     * @param algorithm
     *            加密算法,支持SHA-1,SHA-2(SHA-256,SHA-384,SHA-512),MD2,MD5
     * @return 加密结果
     */
    private String GetEncString(String plainText, String algorithm)
    {

        try
        {
            MessageDigest md = MessageDigest.getInstance(algorithm);
            md.update(plainText.getBytes());
            byte[] b = md.digest();
            StringBuilder output = new StringBuilder(32);
            for (int i = 0; i < b.length; i++)
            {
                String temp = Integer.toHexString(b[i] & 0xff);
                if (temp.length() < 2)
                {
                    output.append("0");// 不足两位,补0
                }
                output.append(temp);
            }
            return output.toString();
        }
        catch (NoSuchAlgorithmException e)
        {
            e.printStackTrace();
            return null;
        }
    }
    /*
     * 另外一种方法 //private final char[] HEXCHAR_LOWERCASE = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; //private
     * final char[] HEXCHAR_UPPERCASE = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; private String
     * getDigest(String plainText, String algorithm,String stringcase) throws Exception { MessageDigest md5 = MessageDigest.getInstance(algorithm);
     * md5.update(plainText.getBytes()); return toHexString(md5.digest(),stringcase); }
     * 
     * private String toHexString(byte[] b,String stringcase) { StringBuilder sb = new StringBuilder(b.length * 2);
     * if(stringcase.toLowerCase().equals("lower")) { for (int i = 0; i < b.length; i++) { sb.append(HEXCHAR_LOWERCASE[(b[i] & 0xf0) >>> 4]);
     * sb.append(HEXCHAR_LOWERCASE[b[i] & 0x0f]); } } else if(stringcase.toLowerCase().equals("upper")) { for (int i = 0; i < b.length; i++) {
     * sb.append(HEXCHAR_UPPERCASE[(b[i] & 0xf0) >>> 4]); sb.append(HEXCHAR_UPPERCASE[b[i] & 0x0f]); } } return sb.toString(); }
     */
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有