Java SHA-256加密的两种实现方法详解

 更新时间:2017年08月29日 11:16:08   作者:lemontree1993  
这篇文章主要介绍了Java SHA-256加密的两种实现方法,结合实例形式分析了java实现SHA-256加密的实现代码与相关注意事项,需要的朋友可以参考下

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

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

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

maven:

<dependency>
 <groupId>commons-codec</groupId>
 <artifactId>commons-codec</artifactId>
 <version>${common-codec.version}</version>
</dependency>

实现代码:

/***
* 利用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自带的实现加密:

/**
* 利用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();
}

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

在线SHA1加密工具:
http://tools.jb51.net/password/sha1encode

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java数组操作技巧总结

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 浅析Java的Hibernate框架中的继承关系设计

    浅析Java的Hibernate框架中的继承关系设计

    这篇文章主要介绍了Java的Hibernate框架中的继承关系设计,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解

    JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解

    这篇文章主要介绍了JAVA WSIMPORT生成WEBSERVICE客户端401认证过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java判断2个List集合是否相等(不考虑元素的顺序)

    Java判断2个List集合是否相等(不考虑元素的顺序)

    今天小编就为大家分享一篇关于Java判断2个List集合是否相等(不考虑元素的顺序)的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java消息队列中的Kafka如何保证幂等性

    Java消息队列中的Kafka如何保证幂等性

    这篇文章主要介绍了Java消息队列中的Kafka如何保证幂等性,Kafka是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理,既然是消息队列,那么Kafka也就拥有消息队列的相应的特性了,需要的朋友可以参考下
    2023-07-07
  • Java数据结构之常见排序算法(下)

    Java数据结构之常见排序算法(下)

    这篇文章主要介绍了Java数据结构之常见排序算法(下),与之相对有(上),想了解的朋友可以去本网站扫搜,在这两篇文章里涵盖关于八大排序算法的所有内容,需要的朋友可以参考下
    2023-01-01
  • Java 从json提取数组并转换为list的操作方法

    Java 从json提取数组并转换为list的操作方法

    这篇文章主要介绍了Java 从json提取出数组并转换为list,使用getJSONArray()获取到jsonarray后,再将jsonArray转换为字符串,最后将字符串解析为List列表,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • springboot使用log4j2异步日志提升性能的实现方式

    springboot使用log4j2异步日志提升性能的实现方式

    这篇文章主要介绍了springboot使用log4j2异步日志提升性能,异步日志实现方式:将日志存入一个单独的队列中,有一个单独的线程从队列中获取日志并写入磁盘文件,需要的朋友可以参考下
    2022-05-05
  • Java通过递归算法解决迷宫与汉诺塔及八皇后问题

    Java通过递归算法解决迷宫与汉诺塔及八皇后问题

    方法就是用来完成解决某件事情或实现某个功能的办法;程序调用自身的编程技巧称为递归,本文主要讲的是通过递归来实现三个经典的问题,解决迷宫,汉诺塔,八皇后问题,感兴趣的朋友可以参考一下
    2022-05-05
  • IDEA连接MySQL提示serverTimezone的问题及解决方法

    IDEA连接MySQL提示serverTimezone的问题及解决方法

    很多朋友私聊小编,使用IDEA软件连接MySQL数据库时总是提示Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.的错误,小编就不一一回复大家了,下面小编把我的解决方法分享到脚本之家平台,需要的朋友参考下吧
    2021-05-05
  • SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式

    SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式

    这篇文章主要介绍了SpringBatch结合SpringBoot简单使用实现工资发放批处理操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论