哈希值

作者: 欢乐时光欢乐你我 | 来源:发表于2017-06-25 20:42 被阅读7次

哈希值就是文件的身份证,不过比身份证还严格。他是根据文件大小,时间,类型,创作着,机器等计算出来的,很容易就会发生变化,谁也不能预料下一个号码是多少,也没有更改他的软件。哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的。

消息身份验证代码 (MAC) 哈希函数通常与数字签名一起用于对数据进行签名,而消息检测代码 (MDC) 哈希函数则用于数据完整性。

package com.example.common;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
public class HashFile {
    public static void main(String args[]) {  
       try {  
           System.out.println("32位:d71732f1187d2f008ad106c308d31947");
           System.out.println(getMD5Checksum("E:\\定台.pptx"));  
       }  
       catch (Exception e) {  
           e.printStackTrace();  
       }  
    }  
          
    public static byte[] createChecksum(String filename) throws Exception {  
       InputStream fis =  new FileInputStream(filename);          //<span style="color: rgb(51, 51, 51); font-family: arial; font-size: 13px; line-height: 20px;">将流类型字符串转换为String类型字符串</span>  
      
       byte[] buffer = new byte[1024];  
       MessageDigest complete = MessageDigest.getInstance("MD5"); //如果想使用SHA-1或SHA-256,则传入SHA-1,SHA-256  
       int numRead;  
      
       do {  
           numRead = fis.read(buffer);    //从文件读到buffer,最多装满buffer  
           if (numRead > 0) {  
           complete.update(buffer, 0, numRead);  //用读到的字节进行MD5的计算,第二个参数是偏移量  
           }  
       } while (numRead != -1);  
      
       fis.close();  
       return complete.digest();  
    }  
      
    public static String getMD5Checksum(String filename) throws Exception {  
       byte[] b = createChecksum(filename);  
       String result = "";  
      
       for (int i=0; i < b.length; i++) {  
           result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring(1);//加0x100是因为有的b[i]的十六进制只有1位  
       }  
       return result;  
    }

}


相关文章

  • 计算文件哈希值

    什么是哈希值? 哈希值(hash values)是使用哈希函数(hash function)计算得到的值。哈希函数...

  • 【区块链】哈希算法在比特币系统作用

    比特币地址是由公钥经过单向的加密哈希算法生成。被广播的交易会有哈希值,每个区块也会有哈希值。 哈希算法和哈希值究竟...

  • 看图识:比特币区块及新区块生成过程

    上图说明:区块N:前一个区块的哈希值区块N+1:本区块的哈希值哈希值组合#ABCD:梅克莱根(也叫:默克树哈希值)...

  • 分布式数据分布算法

    一、哈希分布 1、哈希取模 哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数...

  • 对象的equals和hashCode

    对象的 hashCode() 方法,为对象返回一个 哈希值。那什么是 哈希值 ? 这个词的解释有很多。 哈希值是...

  • hash值, 监控工具, umask, 分区, inode和bl

    1. hash值 对文件进行hash运算, 生成一段哈希值, 对比自己的哈希值和发送文件给其他人后的哈希值, 检验...

  • Object类

    Object类的方法:public int hashCode():返回该对象的哈希码值。哈希码值是根据哈希算法计算...

  • MD5算法与upper

    1. 哈希值(hash value) 将任意长度的二进制映射为固定长度的二进制值,这个二进制值成为哈希值。哈希值是...

  • 12、字典的定义和常用操作

    字典包含哈希值和指向的对象 {"哈希值", "对象"} {'length':180, 'width': 8...

  • 哈希值

    哈希值就是文件的身份证,不过比身份证还严格。他是根据文件大小,时间,类型,创作着,机器等计算出来的,很容易就会发生...

网友评论

    本文标题:哈希值

    本文链接:https://www.haomeiwen.com/subject/xyvrcxtx.html