欢迎光临!中国网页设计提供最新的免费网页制作教程,网页设计技术,HTML5+DIV3...中国站长必上的网站。
加入收藏设为首页广告合作
您当前位置:网站首页 >> 网络编程 >> jsp编程 >> jsp实例教程 >> java加密入门:BASE64、MD5、SHA、HMAC加密类源码
  • jsp基础教程
  • jsp实例教程
  • jsp高级技巧
  • java加密入门:BASE64、MD5、SHA、HMAC加密类源码

    来源:中国网页设计 浏览:3417

    内容提要:文章介绍了简单的java加密算法:BASE64、MD5、SHA、HMAC,并给出了其java 类实现代码,分析了4大加密算法的原理及优缺点。

    简单的java加密算法有:

    1、BASE64 严格地说,属于编码格式,而非加密算法
    2、MD5(Message Digest algorithm 5,信息摘要算法)
    3、SHA(Secure Hash Algorithm,安全散列算法)
    4、HMAC(Hash Message Authentication Code,散列消息鉴别码)

    1. BASE64

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

    BASE64的加密解密是双向的,可以求反解。

    BASE64Encoder和BASE64Decoder是非官方JDK实现类。虽然可以在JDK里能找到并使用,但是在API里查不到。JRE 中 sun 和 com.sun 开头包的类都是未被文档化的,他们属于 java, javax 类库的基础,其中的实现大多数与底层平台有关,一般来说是不推荐使用的。

    BASE64 严格地说,属于编码格式,而非加密算法。

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    public class BASE64 {
        /** 
         * BASE64解密     
         * @param key 
         * @return 
         * @throws Exception 
         */ 
        public static byte[] decryptBASE64(String key) throws Exception {  
            return (new BASE64Decoder()).decodeBuffer(key);  
        }   
        /** 
         * BASE64加密  
         * @param key 
         * @return 
         * @throws Exception 
         */ 
        public static String encryptBASE64(byte[] key) throws Exception {  
            return (new BASE64Encoder()).encodeBuffer(key);  
        }  
        public static void main(String[] args) {
           String  str="12345678";
          try {
             String  result1= BASE64.encryptBASE64(str.getBytes());
             System.out.println("result1=====加密数据=========="+result1);
             byte  result2[]= BASE64.decryptBASE64(result1);
             String  str2=new String(result2);
             System.out.println("str2========解密数据========"+str2);
        } catch (Exception e) {
            e.printStackTrace();
        }
       }
    }

    2. MD5

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。

    广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。

    import java.math.BigInteger;
    import java.security.MessageDigest;
    /*
    MD5(Message Digest algorithm 5,信息摘要算法)
    通常我们不直接使用上述MD5加密。通常将MD5产生的字节数组交给BASE64再加密一把,得到相应的字符串
    Digest:汇编
    */
    public class MD5 {
        public static final String KEY_MD5 = "MD5";   
        public static  String  getResult(String inputStr)
        {
            System.out.println("=======加密前的数据:"+inputStr);
            BigInteger bigInteger=null;
           try {
             MessageDigest md = MessageDigest.getInstance(KEY_MD5);  
             byte[] inputData = inputStr.getBytes();
             md.update(inputData);  
             bigInteger = new BigInteger(md.digest());  
            } catch (Exception e) {e.printStackTrace();}
            System.out.println("MD5加密后:" + bigInteger.toString(16));  
            return bigInteger.toString(16);
        }
       public static void main(String args[])
        {
            try {
                 String inputStr = "简单加密8888888888888888888";  
                 getResult(inputStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
       }
    }

    第1页 第2页
    发表评论 共有1人对本文发表评论 查看所有评论
    网名:
    评论:
    验证:
    (网友评论仅供表达个人看法,并不表明本站同意其观点或证实其描述)
    迷人的玉哥哥<2017-10-08 08:43:36>评论说:
    Tools   源文件在哪里
    管理员回复:在文章中已经给出代码
    联系我们 - 网站调查 - 免责声明 - 站长简介 - 站点综合查询 - 课件习题 - 友情链接 - 站长统计