zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    9.8 查找表
    LeetCode——Permutations
    利用rman自己主动备份转储spfile
    linux下非root用户怎样改动root权限的文件
    做一个有主见的女生
    APP-FND-00676: 弹性域例程 FDFGDC 无法读取为此说明性弹性域指定的默认引用字段
    矩阵高速幂模板篇
    Index statistics collected bug
    位运算
    poj 1190 生日蛋糕 , 强剪枝
  • 原文地址:https://www.cnblogs.com/zhangchunxi/p/3009037.html
Copyright © 2011-2022 走看看