zoukankan      html  css  js  c++  java
  • Java实现SHA256算法

    本文实例讲述了Java SHA-256加密的两种实现方法。分享给大家供大家参考,具体如下:

    最近在做注册的一个功能,密码要进行加密,一开始想用MD5加密,但是听说被破解了已经,于是想玩玩SHA-256加密。学习了下,总结两种方法供后面参考:

    1、利用Apache的工具类实现加密:

    maven:

    1
    2
    3
    4
    5
    <dependency>
     <groupId>commons-codec</groupId>
     <artifactId>commons-codec</artifactId>
     <version>${common-codec.version}</version>
    </dependency>
     

    实现代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /***
    * 利用Apache的工具类实现SHA-256加密
    * @param str 加密后的报文
    * @return
    */
    public static String getSHA256Str(String str){
     MessageDigest messageDigest;
     String encdeStr = "";
     try {
      messageDigest = MessageDigest.getInstance("SHA-256");
      byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));
      encdeStr = Hex.encodeHexString(hash);
     } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
     } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
     }
     return encdeStr;
    }

    2、利用Java自带的实现加密:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    /**
    * 利用java原生的摘要实现SHA256加密
    * @param str 加密后的报文
    * @return
    */
    public static String getSHA256StrJava(String str){
     MessageDigest messageDigest;
     String encodeStr = "";
     try {
      messageDigest = MessageDigest.getInstance("SHA-256");
      messageDigest.update(str.getBytes("UTF-8"));
      encodeStr = byte2Hex(messageDigest.digest());
     } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
     } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
     }
     return encodeStr;
    }
    /**
    * 将byte转为16进制
    * @param bytes
    * @return
    */
    private static String byte2Hex(byte[] bytes){
     StringBuffer stringBuffer = new StringBuffer();
     String temp = null;
     for (int i=0;i<bytes.length;i++){
      temp = Integer.toHexString(bytes[i] & 0xFF);
      if (temp.length()==1){
      //1得到一位的进行补0操作
      stringBuffer.append("0");
      }
      stringBuffer.append(temp);
     }
     return stringBuffer.toString();
    }
  • 相关阅读:
    [WM]谁抢走了应用程序的性能?
    只有更烂的程序员
    [WM]n久以前写的ConnMgr类
    [WM][转]PPC中如何找到正在使用中的网络(源代码)
    让IE6支持minwidth和maxwidth的方法(JS实现) + (CSS实现)
    jQuery tab 切换函数
    wap、3g手机的端的网页头部
    复制到系统剪贴板之IE,ff兼容版
    鼠标滑过展开,js版和jquery版
    JS+CSS实现网页滚动条美化
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15180597.html
Copyright © 2011-2022 走看看