在Java中,可以使用MessageDigest类进行SHA哈希处理 。 在本文中,我们将向您展示如何使用SHA-256算法对字符串进行哈希处理并生成文件的校验和。

1. MessageDigest

1.1散列字符串。

PasswordSha256.java
package com.mkyong.hashing;import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class PasswordSha256 {public static void main(String[] args) throws NoSuchAlgorithmException {String password = "123456";MessageDigest md = MessageDigest.getInstance("SHA-256");byte[] hashInBytes = md.digest(password.getBytes(StandardCharsets.UTF_8));// bytes to hexStringBuilder sb = new StringBuilder();for (byte b : hashInBytes) {sb.append(String.format("%02x", b));}System.out.println(sb.toString());}}

输出量

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

1.2文件校验和。

d:\server.log
123456
FileCheckSum.java
package com.mkyong.hashing;import java.io.FileInputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class FileCheckSum {public static void main(String[] args) throws NoSuchAlgorithmException, IOException {MessageDigest md = MessageDigest.getInstance("SHA-256");byte[] hashInBytes = checksum("d:\\server.log", md);System.out.println(bytesToHex(hashInBytes));}private static byte[] checksum(String filepath, MessageDigest md) throws IOException {try (DigestInputStream dis = new DigestInputStream(new FileInputStream(filepath), md)) {while (dis.read() != -1) ; //empty loop to clear the datamd = dis.getMessageDigest();}return md.digest();}private static String bytesToHex(byte[] hashInBytes) {StringBuilder sb = new StringBuilder();for (byte b : hashInBytes) {sb.append(String.format("%02x", b));}return sb.toString();}}

输出量

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

2. Apache Commons编解码器

或者,尝试使用此Apache Commons Codecs库进行哈希处理。

pom.xml
<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version></dependency>

2.1散列字符串。

PasswordSha256.java
package com.mkyong.hashing;import org.apache.commons.codec.digest.DigestUtils;public class PasswordSha256 {public static void main(String[] args) {String password = "123456";String result = DigestUtils.sha256Hex(password);System.out.println(result);}}

输出量

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

2.2文件校验和。

FileCheckSum.java
package com.mkyong.hashing;import org.apache.commons.codec.digest.DigestUtils;import java.io.FileInputStream;
import java.io.IOException;public class FileCheckSum {public static void main(String[] args) throws IOException {String result = DigestUtils.sha256Hex(new FileInputStream("d:\\server.log"));System.out.println(result);}}

输出量

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

参考文献

  1. Apache Commons编解码器
  2. Java –如何将字节转换为十六进制
  3. 维基百科– SHA-2
  4. MessageDigest JavaDoc
标签: 哈希 Java sha256

翻译自: https://mkyong.com/java/java-sha-hashing-example/


http://www.taodudu.cc/news/show-2651202.html

相关文章:

  • Maven配置文件示例
  • UDF函数:对字符串实现sha256加密,返回64位十六进制字符串
  • 腾讯产品策划运营类笔经(带题目)
  • 产品全生命周期管理
  • 2018年腾讯春招实习【CDG事业群产品策划岗】面试心得【已录用】
  • 一公司的产品策划职位要求
  • 2015网龙产品策划暑期实习心得
  • 产品经理学习笔记(4)-第一种角色:产品策划——善于发现用户需求的人
  • 产品策划五:App升级系统策划方案
  • 产品竞品分析策划
  • 网易 产品策划( 杭州研究员) 笔试题解
  • 网易互联网产品策划专员笔试题
  • 腾讯产品策划运营类职位笔试题和参考答案
  • 2016网易春季校园招聘产品策划笔试
  • 产品管理,产品策划,产品设计
  • 什么是互联网产品策划、什么是运营策划(经典收藏)
  • 产品策划知识
  • 产品策划流程体系、工具
  • 《解构产品经理互联网产品策划入门》PDF+《互联网产品运营产品经理的10堂精英课》PDF分析...
  • 产品策划一:移动App项目研发流程及版本规划
  • 产品推广方案策划
  • 产品策划到底是做什么的?
  • 产品营销策划方案:6个创意来源
  • SEO网站优化是什么
  • 网站优化都有哪些方法 网站优化技巧?
  • 网站seo优化方式途径
  • 网站优化策略有哪几种方法
  • 网站优化排名的5个方法
  • 什么是聚合页面?网站优化做聚合页面的好处
  • 完全不懂SEO怎样入手做网站优化

Java SHA哈希示例相关推荐

  1. Java 11 – ChaCha20-Poly1305加密示例

    本文向您展示如何使用RFC 7539中定义的ChaCha20-Poly1305算法对消息进行加密和解密. PS ChaCha20-Poly1305加密算法可从Java 11获得. 1.常见问题 一些常 ...

  2. java中get接口示例_Java即时类| 带示例的get()方法

    java中get接口示例 即时类的get()方法 (Instant Class get() method) get() method is available in java.time package ...

  3. java中get接口示例_Java LocalDateTime类| 带示例的get()方法

    java中get接口示例 LocalDateTime类的get()方法 (LocalDateTime Class get() method) get() method is available in ...

  4. 【Java 8 新特性】Java Stream.of()用法示例

    本页将介绍Java Stream.of方法示例.Stream.of用于为给定元素创建顺序流.我们可以传递单个元素或多个元素. 查看javadoc中Stream.of方法声明. static <T ...

  5. Java 9 特性与示例

    Java 9 特性与示例 Java 9是一个主要版本,它为开发人员带来了许多功能.在本文中,我们将详细介绍Java 9的功能. Java 10已发布,有关Java 10发行版的完整概述,请参阅Java ...

  6. Code Review:C#与JAVA的哈希表内部机制的一些区别

    看C#与JAVA源码时发现C#与JAVA哈希表的实现略有不同,特此分享一下. 基本结构比较 JAVA的桶 278 static class Node<K,V> implements Map ...

  7. 【零基础学Java】—哈希值(四十一)

    [零基础学Java]-哈希值(四十一) 一. HashSet集合的介绍 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许重复的元素 没有索引,没有带 ...

  8. java 上文件传示例_Java解压缩文件示例

    java 上文件传示例 Welcome to Java Unzip File Example. In the last post, we learned how to zip file and dir ...

  9. java封装json串示例_Java JSON示例

    java封装json串示例 Welcome to the Java JSON Example Tutorial. JSON (JavaScript Object Notation) is text-b ...

  10. 设计模式-单例模式-注册式单例模式-枚举式单例模式和容器式单例模式在Java中的使用示例

    场景 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例: 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例_霸道流氓气质的博客- ...

最新文章

  1. Screenlets:桌面小玩意
  2. 2021-10-11 寻找二叉树结点的前驱或后继结点(用到parent指针)
  3. 09丨缓存异常:如何解决缓存和数据库的数据不一致问题
  4. 《剑指offer》左旋转字符串
  5. asp.net mvc中DropDownList,CheckBox,RadioButton
  6. qt打包rpm时候先安装其他软件_云计算学习路线图素材课件,Linux中软件安装的方式...
  7. 这届年轻人,连泡面也买不起了
  8. PHP中表单没有问题但是$_FILES为空的解决办法
  9. 利用 MPI 求素数个数
  10. 【TensorFlow】Win10+TensorFlow+Anaconda+CUDA+cuDNN
  11. mysql数据库随机生成数据库_MySQL 从零开始:08 番外:随机生成数据库数据
  12. 批量重命名文件夹中的文件(python)
  13. Tiptop CR报表axcr700采购入库月报增加tlf99“多角贸易序号”,部分资料无数据修复4gl文件bug
  14. POJ 1564 Sum It Up
  15. io.fabric8.docker-maven-plugin插件使用
  16. 报错GENERIC_INTERNAL_ERROR(65536)处理
  17. PyQt5初学试验记录(三):Pyinstaller打包小结
  18. 流氓软件强夺用户数据,马斯克截胡扎克伯格!
  19. 读书笔记--交流电的瞬时值和有效值
  20. Prolog不是hentai

热门文章

  1. 传国宝玺 第二部 降墓 第十六章 三煞天棺
  2. 关于AOSP 与AOKP
  3. civil3D地形导入AIW(设置投影坐标系)
  4. 浏览器被hao123拦截
  5. 语言教案 小小计算机,大班语言小小播音员游戏教案
  6. ViewportWidth,Width,MeasuredWidth
  7. 360安全卫士团队版or企业版卸载
  8. String Permutation
  9. 正弦波振荡的常见电路
  10. 在博客中添加动漫美女的js