首页 > 编程语言 >Java 编码(一)Java实现SHA256算法

Java 编码(一)Java实现SHA256算法

时间:2023-06-19 14:11:17浏览次数:51  
标签:messageDigest 编码 return String str Java SHA256 加密

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

参考文献 Java实现SHA256算法 - 自学java的小陈 - 博客园 (cnblogs.com)

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
* import java.io.UnsupportedEncodingException;

* import java.security.MessageDigest;

* import java.security.NoSuchAlgorithmException;

 


*/ 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[] byteBuffer){ StringBuffer strHexString = new StringBuffer();

   for (int i = 0; i < byteBuffer.length; i++) {
     String hex = Integer.toHexString(0xff & byteBuffer[i]);
     if (hex.length() == 1) {
       strHexString.append('0');
      }
      strHexString.append(hex);
    }

 return stringBuffer.toString();
}
}

标签:messageDigest,编码,return,String,str,Java,SHA256,加密
From: https://www.cnblogs.com/sandyflower/p/17491014.html

相关文章

  • 【Android面试】2023最新面试专题五:Java深入泛型与注解
    1泛型是什么,泛型擦除呢?详细讲解享学课堂移动互联网系统课程:架构师筑基必备技能《架构设计中必不可少的泛型-Java泛型的定义与原理》这道题想考察什么?泛型考察的知识点泛型的特点和优缺点以及泛型擦除考生应该如何回答泛型就是一种就是一种不确定的数据类型。在Java中有着重要的地......
  • 记录一次Java Convert Kotlin造成的空指针异常
    不知道大家在使用Kotlin进行编码的时候,有没有直接使用AS的Code->ConvertJavaFile2KotlinFile这个功能,此功能在日常使用中还是比较实用的,可以帮助我们将老的Java或者复制的Java代码一键转换成Kotlin代码,最近在使用此功能的时候竟然遇到了空指针的Crash,在此记录一下,顺便也给大......
  • 【Android面试】2023最新面试专题四:Java核心基础(上)
    1Java中提供了抽象类还有接口,开发中如何去选择呢?这道题想考察什么?Java是面向对象编程的,抽象是它的一大特征,而体现这个特征的就是抽象类与接口。抽象类与接口某些情况下都能够互相替代,但是如果真的都能够互相替代,那Java为何会设计出抽象与接口的概念?这就需要面试者能够掌握两者的区......
  • 在 JavaScript 中,判断一个对象是否为空有几种方法。
    使用Object.keys()方法检查对象的键值对数量:functionisObjectEmpty(obj){returnObject.keys(obj).length===0;}//示例用法constobj1={};console.log(isObjectEmpty(obj1));//输出:trueconstobj2={name:'John',age:25};console.log(isObjectEm......
  • API接口开发系列(获得京东JD商品详情原数据java源代码调用示例)
    请求获取京东商品详情原数据(免费获取调用请私信)的作用:1.提供商品信息:京东商品详情中的原数据可以提供商品的基本信息,包括商品名称、价格、品牌、规格参数、图片等,让消费者更好地了解商品。2.帮助搜索引擎识别:京东商品详情的原数据可以被搜索引擎识别,在搜索结果页中显示更为详细丰富......
  • SprintBoot JavaWeb访问提示 Full authentication is required to access this resour
    SprintBoot部署好网站之后访问没有异常,但是配置域名地址至Nginx上时登录请求报错了,经查询是因为项目是前后端分离,请求的路由会加上工程的主路径,所以需要在Nginx多配置一个地址,如Location/{http://localhost:8080/project}location/project/{http://loc......
  • JavaScript 显示数据
    JavaScript显示数据JavaScript可以通过不同的方式来输出数据:使用window.alert()弹出警告框。使用document.write()方法将内容写到HTML文档中。使用innerHTML写入到HTML元素。使用console.log()写入到浏览器的控制台。window.alert()window.alert()是一个......
  • 使用Kotlin+Rretrofit+rxjava+设计模式+MVP封装网络请求
    0、前言:kotlin使用起来非常顺畅,尤其是结合rxjava、设计模式使用,你会发现写代码原来可以这么开心!什么?你还在使用java?赶紧去学一下kotlin吧!我相信你一定会对他爱不释手,kotlin也很容易学,花一天的时间就可以从java切换为kotlin一、正文本文主要介绍如何使用kotlin封装网络请求的工具,结......
  • 基于JAVA丝绸之路文化遗产信息发布和展示系统
    丝绸之路文化遗产是我们传统文化的精髓,是一代又一代传承人努力传承的成果,也是我们年轻人应该继承下去的文化瑰宝。而利用传承网站这样的与时代俱进的高新技术来表现和传承丝绸之路文化遗产这样的传统文化,无疑会让人们更加乐于接受和了解,间接的传播和保护了丝绸之路文化遗产。根据本......
  • 20230618 java.util.stream.Stream
    介绍java.util.stream.StreampublicinterfaceStream<T>extendsBaseStream<T,Stream<T>>APIstaticbuilder返回Builder创建流:ofofNullableempty创建无限流:iterategenerateconcat<T>Stream<T>concat(Stream<?ext......