• 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();
    }
  • 相关阅读:
    python基础--(hashlib,configparser,logging)模块功能
    java发送邮件
    Struts2和SpringMVC的action是单例还是原型的?
    HashSet存储过程中如何排除不同的自定义对象?
    使用win32Diskimager后恢复U盘(合并U盘容量)
    linux进程与端口
    centos 7.6 忘记root密码
    Authentication token is no longer valid; new one required You (oracle) are not allowed to access to (crontab) because of pam configuration.
    存储过程
    oracle extract()函数
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15180597.html
Copyright © 2020-2023  润新知