散列函数非常有用,几乎出现在所有信息安全应用程序中。

哈希函数是将数字输入值转换为另一个压缩数值的数学函数。 散列函数的输入具有任意长度,但输出始终具有固定长度。

散列函数返回的值称为message digest或简称hash values 。 下图说明了散列函数。

Java提供了一个名为MessageDigest的类,它属于java.security包。 此类支持诸如SHA-1,SHA 256,MD5算法之类的算法,以将任意长度的消息转换为消息摘要。

要将给定邮件转换为邮件摘要,请按照以下步骤进行操作 -

第1步:创建MessageDigest对象

MessageDigest类提供了一个名为getInstance()的方法。 此方法接受String变量,该变量指定要使用的算法的名称,并返回实现指定算法的MessageDigest对象。

使用getInstance()方法创建MessageDigest对象,如下所示。

MessageDigest md = MessageDigest.getInstance("SHA-256");

第2步:将数据传递给创建的MessageDigest对象

创建消息摘要对象后,需要将消息/数据传递给它。 您可以使用MessageDigest类的update()方法执行此操作,此方法接受表示消息的字节数组,并将其添加/传递给上面创建的MessageDigest对象。

md.update(msg.getBytes());

第3步:生成消息摘要

您可以使用digest()方法生成消息摘要,MessageDigest类此方法计算当前对象的散列函数,并以字节数组的形式返回消息摘要。

使用摘要方法生成消息摘要。

byte[] digest = md.digest();

例子 (Example)

以下是从文件中读取数据并生成消息摘要并打印出来的示例。

import java.security.MessageDigest;
import java.util.Scanner;
public class MessageDigestExample {public static void main(String args[]) throws Exception{//Reading data from userScanner sc = new Scanner(System.in);System.out.println("Enter the message");String message = sc.nextLine();//Creating the MessageDigest object  MessageDigest md = MessageDigest.getInstance("SHA-256");//Passing data to the created MessageDigest Objectmd.update(message.getBytes());//Compute the message digestbyte[] digest = md.digest();      System.out.println(digest);  //Converting the byte array in to HexString formatStringBuffer hexString = new StringBuffer();for (int i = 0;i<digest.length;i++) {hexString.append(Integer.toHexString(0xFF & digest[i]));}System.out.println("Hex format : " + hexString.toString());     }
}

输出 (Output)

上述程序生成以下输出 -

Enter the message
Hello how are you
[B@55f96302
Hex format: 2953d33828c395aebe8225236ba4e23fa75e6f13bd881b9056a3295cbd64d3

Java加密1-散列函数相关推荐

  1. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

    [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...

  2. Java加密与解密笔记(三) 非对称加密

    非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...

  3. Java 加密 AES 对称加密算法

    版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...

  4. Java加密解密入门

    一 概述 Java加密解密概述 Java安全领域分为四个部分:JCA-Java加密体系结构:JCE-Java加密扩展包:JSSE-Java安全套接字扩展包:JAAS-Java鉴别与安全服务. JCA提 ...

  5. java中解密技术是什么_详解Java 加密解密技术的分类和归纳

    这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下 Java 加密解密基础: 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信 ...

  6. java 加密解密编程,java 加密解密容易实现

    当前位置:我的异常网» 编程 » java 加密解密容易实现 java 加密解密容易实现 www.myexceptions.net  网友分享于:2013-10-27  浏览:3次 java 加密解密 ...

  7. 安卓逆向_25 --- 密码学 之 《Java加密与解密的艺术》

    <Java加密与解密的艺术>中文 PDF版 :https://www.jb51.net/books/65048.html 1. 密码学应用 :https://www.bilibili.co ...

  8. Java 加密解密之对称加密算法PBE

    JAVA  加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...

  9. JAVA加密--JCA、JCE、CSP概念、体系架构与使用示例

    1 概念 JCA: Java密码体系结构 Java Cryptography Architecture JCE(Java Cryptography Extension),在早期JDK版本中,由于受美国 ...

  10. Java加密技术(四)——非对称加密算法RSA

    转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA     这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...

最新文章

  1. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言
  2. HDU (1575)Tr A ---矩阵快速幂
  3. buu old-fashion
  4. android事件传递机制以及onInterceptTouchEvent()和onTouchEvent()详解二之小秘与领导的故事...
  5. 设计微服务架构需要解决的问题
  6. USACO-Section2.1 Sorting a Three-Valued Sequence(排序)
  7. PAT1019. 数字黑洞
  8. 多云场景下,程序员该如何管理云凭据?
  9. html中span不显示背景
  10. 天梯—判断素数(C语言)
  11. 结构化、半结构化、非结构化的理解
  12. Jenkins远程命令执行漏洞(CVE-2018-1000861)
  13. 海洋CMS采集翻译发布插件
  14. maya渲染帧拷贝删除重命名插件 tjh_copy_same_frame1.1 下载及教程
  15. uni-app中自定义图表(canvas实现chart图表)开发篇(1)-圆环带进度条
  16. 树莓派4B安装opencv4【详解】
  17. 快速排序讲解+示意图
  18. 联想 ideapad Y430 安装XP
  19. 无线wifi丢包的解决办法
  20. mysql数据库忘记root密码

热门文章

  1. 微信小程序webview识别二维码长按点击识别二维码
  2. php单链表检测有没有环,PHP找出链表中环入口节点步骤详解
  3. 电脑变无线打印服务器,废品再利用 老电脑变网络打印服务器
  4. 视频剪辑怎么自学?其实剪辑很简单
  5. 互联网日报 | 5月2日 星期日 | 五一档总票房破5亿;中国联通在香港正式推出5G服务;欧盟首次对苹果发起反垄断诉讼
  6. 基于Oneplus 7 Pro的Flyme9&MIUI12.5刷机教程
  7. Rectangle和RectangleF结构
  8. unlikely和likely的使用
  9. Java 版 Prim 算法求最小生成树
  10. Robomongo的安装和配置