一、Hash函数

哈希函数就是能将任意长度的数据映射为固定长度的数据的函数。哈希函数返回的值被叫做哈希值、哈希码、散列,或者直接叫做哈希。

二、消息摘要

将长度不固定的消息(message)作为输入参数,运行特定的Hash函数,生成固定长度的输出,这个输出就是Hash,也称为这个消息的消息摘要(Message Digest)

信息摘要算法是hash算法的一种,具有以下特点:

无论输入的消息有多长,计算出来的消息摘要的长度总是固定的,计算出的结果越长,一般认为该摘要算法越安全,MD5 128位 SHA-1 160位

输入的消息不同,产生的消息摘要必不同,输入的消息相同,产生的消息摘要一定是相同的

单向不可逆

三、MessageDigest

java中通过MessageDigest来为程序提供消息摘要算法的功能,例如md5 和sha,这个经常会使用的到,这里就不多解释了

标记解释

通过入参的算法名获取MessageDigest实例,入参例如:MD2  MD5  SHA-1  SHA-256  SHA-384  SHA-512

使用指定的字节数组更新摘要

完成hash计算,只调用一次,在调用 digest()方法之后,MessageDigest 对象被重新设置成其初始状态

重置摘要

四、使用

由于commons-codec包中已经封装好了一些使用的方法,引入依赖,直接调用即可

4.1、依赖

commons-codec

commons-codec

1.4

4.2、工具类

package com.treebear.starwifi.common.util;

import org.apache.commons.codec.binary.Base64;

import org.apache.commons.codec.digest.DigestUtils;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

/**

* @author DUCHONG

* @since 2018-05-02 9:18

**/

public class EncryptionUtils {

public static String base64Encode(String data){

return Base64.encodeBase64String(data.getBytes());

}

public static byte[] base64Decode(String data){

return Base64.decodeBase64(data.getBytes());

}

public static String md5(String data) {

return DigestUtils.md5Hex(data);

}

public static String sha1(String data) {

return DigestUtils.shaHex(data);

}

public static String sha256Hex(String data) {

return DigestUtils.sha256Hex(data);

}

public static String getMD5File(File file){

FileInputStream fis=null;

try {

fis=new FileInputStream(file);

return DigestUtils.md5Hex(fis);

}

catch (IOException e) {

e.printStackTrace();

}

finally {

if(fis != null){

try {

fis.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

public static void main(String[] args) {

//long start= System.currentTimeMillis();

System.out.println(getMD5File(new File("F:\\\\temp\\\\WEB-INF.zip")));

System.out.println(getMD5File(new File("F:\\\\temp2\\\\WEB-INF.zip")));

//long end=System.currentTimeMillis();

//System.out.println("共耗时:"+(float)(end-start)/1000+"s");

}

}

html数据摘要算法,Hash函数和消息摘要算法(示例代码)相关推荐

  1. 密码学基础知识(六)Hash函数与消息认证

    Hash函数和消息认证 先说Hash 哈希函数,可以将任意长度的消息压缩为某一固定长度的消息摘要函数.一句话,Hash简直了. 当然有逆天的一面就有大缺点,过程不可逆.傻了吧,哈哈. Hash的性质: ...

  2. python 更新数据库历史_python 实现数据库中数据添加、查询与更新的示例代码

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  3. python查询数据库后更新_python 实现数据库中数据添加、查询与更新的示例代码...

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  4. python代码中怎么增加数据_python 实现数据库中数据添加、查询与更新的示例代码...

    一.前言 最近做web网站的测试,遇到很多需要批量造数据的功能:比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据:本次 ...

  5. python qq自动发消息软件_Python之qq自动发消息的示例代码

    准备:pip install win32gui 可能遇到的麻烦: No module named 'win32gui' 的解决方法(踩坑之旅) 源码: import win32gui import w ...

  6. 企业微信机器人脚本python_python实现企业微信定时发送文本消息的示例代码

    企业微信定时发送文本消息 使用工具:企业微信机器人+python可执行文件+计算机管理中的任务计划程序 第一步:创建群机器人 选择群聊,单击鼠标右键,添加群机器人. 建立群机器人后,右键查看机器人,如 ...

  7. ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...

  8. 足球数据【文字直播】API调用示例代码

    分享[文字直播]接口调用的示例代码 import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import java ...

  9. rocktmq 消息延时清空_使用Kotlin+RocketMQ实现延时消息的示例代码

    一. 延时消息 延时消息是指消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费. 使用延时消息的典型场景,例如: 在电商系统中,用户下完订单30分钟内没支付, ...

最新文章

  1. Bounce 弹飞绵羊
  2. maven中pom.xml中的scope讲解
  3. 快速简易的分解歌词文件
  4. 开源项目选择许可证License
  5. Java从零开始学三(public class和class)
  6. MySQL基本语句和连接字符串
  7. SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
  8. 如何在网上隐藏自己的IP地址
  9. 笔记本电脑触摸板手势教程——快捷操作
  10. 计算机论文鉴定表指导教师评语,毕业论文指导老师评语|毕业论文鉴定表评语...
  11. 加息对银行股影响|加息是对银行股的利好
  12. 第七周助教工作总结——NWNU李泓毅
  13. 微信小程序之获取当前位置附近的美食、酒店、娱乐、超市等,并显示标记
  14. 【meArm机械臂】第一篇·结构设计及搭建
  15. 寒假总结 22-1-9
  16. ORA-01918: user hr does not exist 解决办法
  17. html5 足球比赛阵容图,五人足球战术阵型图文全解
  18. 装饰模式--小美的生日蛋糕
  19. USB限流IC,过流保护芯片
  20. 成功的经验 失败的教训

热门文章

  1. AI 新基建怎么做,腾讯云正式公布全景布局
  2. 珍稀干货!阿里 Web 音视频开发趟坑指南
  3. 女明星因自拍瞳孔倒影暴露住址惨遭跟踪,一张照片是怎么出卖你?
  4. 华为双 11 发 20 亿奖金!?
  5. 对话英特尔高级副总裁 Raja:软件将为硬件释放无限潜力
  6. Python 最抢手、Java 最流行、Go 最有前途,7000 位程序员揭秘 2019 软件开发现状...
  7. AI 改写《权力的游戏》结局,和编剧比谁更烂?
  8. 两万字深入解密 Go 语言接口的那些事儿 | 技术头条
  9. 字节跳动(今日头条),战斗力为何如此凶猛?| 畅言
  10. VS Code Java 开发指南!