Java SHA哈希示例
在Java中,可以使用MessageDigest
类进行SHA哈希处理 。 在本文中,我们将向您展示如何使用SHA-256算法对字符串进行哈希处理并生成文件的校验和。
1. MessageDigest
1.1散列字符串。
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文件校验和。
123456
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库进行哈希处理。
<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version></dependency>
2.1散列字符串。
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文件校验和。
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
参考文献
- Apache Commons编解码器
- Java –如何将字节转换为十六进制
- 维基百科– SHA-2
- MessageDigest JavaDoc
翻译自: 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哈希示例相关推荐
- Java 11 – ChaCha20-Poly1305加密示例
本文向您展示如何使用RFC 7539中定义的ChaCha20-Poly1305算法对消息进行加密和解密. PS ChaCha20-Poly1305加密算法可从Java 11获得. 1.常见问题 一些常 ...
- java中get接口示例_Java即时类| 带示例的get()方法
java中get接口示例 即时类的get()方法 (Instant Class get() method) get() method is available in java.time package ...
- java中get接口示例_Java LocalDateTime类| 带示例的get()方法
java中get接口示例 LocalDateTime类的get()方法 (LocalDateTime Class get() method) get() method is available in ...
- 【Java 8 新特性】Java Stream.of()用法示例
本页将介绍Java Stream.of方法示例.Stream.of用于为给定元素创建顺序流.我们可以传递单个元素或多个元素. 查看javadoc中Stream.of方法声明. static <T ...
- Java 9 特性与示例
Java 9 特性与示例 Java 9是一个主要版本,它为开发人员带来了许多功能.在本文中,我们将详细介绍Java 9的功能. Java 10已发布,有关Java 10发行版的完整概述,请参阅Java ...
- Code Review:C#与JAVA的哈希表内部机制的一些区别
看C#与JAVA源码时发现C#与JAVA哈希表的实现略有不同,特此分享一下. 基本结构比较 JAVA的桶 278 static class Node<K,V> implements Map ...
- 【零基础学Java】—哈希值(四十一)
[零基础学Java]-哈希值(四十一) 一. HashSet集合的介绍 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许重复的元素 没有索引,没有带 ...
- java 上文件传示例_Java解压缩文件示例
java 上文件传示例 Welcome to Java Unzip File Example. In the last post, we learned how to zip file and dir ...
- java封装json串示例_Java JSON示例
java封装json串示例 Welcome to the Java JSON Example Tutorial. JSON (JavaScript Object Notation) is text-b ...
- 设计模式-单例模式-注册式单例模式-枚举式单例模式和容器式单例模式在Java中的使用示例
场景 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例: 设计模式-单例模式-饿汉式单例模式.懒汉式单例模式.静态内部类在Java中的使用示例_霸道流氓气质的博客- ...
最新文章
- Screenlets:桌面小玩意
- 2021-10-11 寻找二叉树结点的前驱或后继结点(用到parent指针)
- 09丨缓存异常:如何解决缓存和数据库的数据不一致问题
- 《剑指offer》左旋转字符串
- asp.net mvc中DropDownList,CheckBox,RadioButton
- qt打包rpm时候先安装其他软件_云计算学习路线图素材课件,Linux中软件安装的方式...
- 这届年轻人,连泡面也买不起了
- PHP中表单没有问题但是$_FILES为空的解决办法
- 利用 MPI 求素数个数
- 【TensorFlow】Win10+TensorFlow+Anaconda+CUDA+cuDNN
- mysql数据库随机生成数据库_MySQL 从零开始:08 番外:随机生成数据库数据
- 批量重命名文件夹中的文件(python)
- Tiptop CR报表axcr700采购入库月报增加tlf99“多角贸易序号”,部分资料无数据修复4gl文件bug
- POJ 1564 Sum It Up
- io.fabric8.docker-maven-plugin插件使用
- 报错GENERIC_INTERNAL_ERROR(65536)处理
- PyQt5初学试验记录(三):Pyinstaller打包小结
- 流氓软件强夺用户数据,马斯克截胡扎克伯格!
- 读书笔记--交流电的瞬时值和有效值
- Prolog不是hentai