哈希文件

时间:2018-04-17 06:33:09

标签: hash

哪种编程语言最适合散列文件? 散列文件时哪种语言更快? 我目前正在搜索一种语言,可以帮助我尽快完成文件的哈希并且时间复杂度更低。 请有人帮帮我。

3 个答案:

答案 0 :(得分:0)

我更喜欢Python,因为python库可用

以下代码适用于MD5哈希。

import hashlib

hasher = hashlib.md5()
with open('myfile.jpg', 'rb') as afile:
    buf = afile.read()
    hasher.update(buf)
print(hasher.hexdigest()) 

以下代码用于SHA1哈希。

import hashlib
BLOCKSIZE = 65536
hasher = hashlib.sha1()
with open('anotherfile.txt', 'rb') as afile:
    buf = afile.read(BLOCKSIZE)
    while len(buf) > 0:
        hasher.update(buf)
        buf = afile.read(BLOCKSIZE)
print(hasher.hexdigest())

答案 1 :(得分:0)

SHA-1和MD5校验和的Java实现:

public static void main(String [] args)抛出异常{

文件fileObj =新文件(" abc.jar");

//使用MD5算法

MessageDigest mdMd5 = MessageDigest.getInstance(" MD5");

//使用SHA-1算法

MessageDigest mdSha1 = MessageDigest.getInstance(" SHA-1");

FileInputStream fileInputStream = new FileInputStream(fileObj);

byte [] bytes = new byte [1024];

int readCount = 0;

while((readCount = fileInputStream.read(bytes))!= -1){

//对于MD5
mdMd5.update(bytes,0,readCount);

//对于SHA-1

mdSha1.update(ytes,0,readCount);

};

fileInputStream.close();

//读取md5哈希字节

byte [] md5HashBytes = mdMd5.digest();

//读取sha-1哈希字节

byte [] sha1HashBytes = mdSha1.digest();

StringBuilder sbMd5 = new StringBuilder();

StringBuilder sbSha1 = new StringBuilder();

for(int i = 0; i< md5HashBytes.length; i ++){

sbMd5.append(Integer.toString((md5HashBytes [i]& 0xff)+ 0x100,16).substring(1));

}

System.out.println(" MD5校验和:");

的System.out.println(sbMd5.toString());

for(int j = 0; j< sha1HashBytes.length; j ++){

sbSha1.append(Integer.toString((sha1HashBytes [j]& 0xff)+ 0x100,16).substring(1));

}

System.out.println(" SHA-1校验和:"); 的System.out.println(sbSha1.toString());

}

答案 2 :(得分:0)

如果你有一个非常大的文件,你必须把它变成部分。计算第一部分的摘要并将其传递给下一部分。对所有零件的所有连续中间哈希采用相同的方法。您可以使用java.security.MessageDigest.clone(),进行哈希计算,然后调用digest()。