java实现加密

1、MD5(信息摘要算法) 和 SHA(安全散列算法)是两种常用的加密算法;

2、java实现加密过程:

创建一个加密工具类为例:

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
//加密类(encrypt:加密)
public class EncryptUtil {

//通过MD5算法加密,参数传进一个字符串,对该字符串进行加密
public static String encryptByMd5(String instr) {
    MessageDigest md; //定义一个MessageDigest类对象,该类提供处理业务方法
String outstr = instr; //定义一个字符串,用于存放加密后的字符串
try {
  md = MessageDigest.getInstance("MD5"); //确定计算方法
    BASE64Encoder base64en = new BASE64Encoder();  // JDK中提供了BASE64Encoder和BASE64Decoder,用它们可以非常方便的完成基于BASE64的编码和解码。
      outstr = base64en.encode(md.digest(str.getBytes("UTF-8"))); // 加密
   } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
   } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
   }
   return outstr;
 }
////通过SHA算法加密,参数传进一个字符串,对该字符串进行加密
public static String encryptByMd5(String instr) {
      MessageDigest md;                               //定义一个MessageDigest类对象,该类提供处理业务方法
      String outstr = instr;                          //定义一个字符串,用于存放加密后的字符串
       try {
              md = MessageDigest.getInstance("SHA-1");  //确定计算方法
              BASE64Encoder base64en = new BASE64Encoder();  // JDK中提供了BASE64Encoder和BASE64Decoder,用它们可以非常方便的完成基于BASE64的编码和解码。
              outstr = base64en.encode(md.digest(str.getBytes("UTF-8"))); // 加密
            } catch (NoSuchAlgorithmException e) {
               e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
               e.printStackTrace();
         }
        return outstr;
}

}


MessageDigest类为提供摘要算法的功能,信息摘要是安全的单向哈希函数,接收任意大小的数据,并输出固定长度的哈希值;

MessageDigest类有如下方法:

(1)public static MessageDigest getInstance(String algorithm)throws NoSuchAlgorithmException

——返回实现指定算法的对象,algorithm为请求算法的名称,如MD5,SHA-1;

(2)public void update(byte[] input)

—— 使用指定的byte数组更新摘要;

(3)public byte[] digest()

——通过执行填充等操作完成哈希计算,调用此方法后,摘要被重置,因此该方法只能被调用一次;

(4)public static boolean isEqual(byte[] digesta,byte[]gigestb)

——比较两个摘要的相等性,做简单的字节比较。

 

连接:http://www.ibm.com/developerworks/cn/java/l-security/

http://wenku.baidu.com/view/a4b709c308a1284ac8504360.html

posted @ 2013-04-08 22:22  夜香  阅读(281)  评论(0编辑  收藏  举报