哪种编程语言最适合散列文件? 散列文件时哪种语言更快? 我目前正在搜索一种语言,可以帮助我尽快完成文件的哈希并且时间复杂度更低。 请有人帮帮我。
答案 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()。