C 加速sha 512哈希的方法?

C 加速sha 512哈希的方法?,c,hash,openssl,sha,C,Hash,Openssl,Sha,通过使用openssl的sha 512算法,我目前能够在3-3.3秒内计算2GB文件的哈希值(我的CPU是i7-5820k),包括打开、写入和关闭文件所需的时间(打开输入并将哈希值写入文本文件) 我想知道是否有任何已知的方法来加速这个过程,或者我的硬盘是否完全出了故障,造成了瓶颈(Seagate BarraCuda Green 2TB 5900RPM SATA 6Gb/s 64MB缓存) FILE*ftest=fopen(hashInBuf,“rb”); 文件*ftest2=fopen(hash

通过使用openssl的sha 512算法,我目前能够在3-3.3秒内计算2GB文件的哈希值(我的CPU是i7-5820k),包括打开、写入和关闭文件所需的时间(打开输入并将哈希值写入文本文件)

我想知道是否有任何已知的方法来加速这个过程,或者我的硬盘是否完全出了故障,造成了瓶颈(Seagate BarraCuda Green 2TB 5900RPM SATA 6Gb/s 64MB缓存)

FILE*ftest=fopen(hashInBuf,“rb”);
文件*ftest2=fopen(hashexputf,“wt”);
//散列函数
SHA512_Init(&mdContext);
而((字节=fread(数据,10102ftest))!=0)
SHA512_更新(&mdContext,数据,字节);
SHA512_期末考试(c和mdContext);
对于(i=0;i

(我当前用于计算sha 512的代码)

优化1:不要一次读取1024字节。一次读取整个兆字节。优化2:让一个线程执行哈希运算,而另一个线程正在读取接下来的数兆字节数据。
而((bytes=fread(data,1,1024,ftest))!=0)SHA512_更新(&mdContext,数据,字节)
与速度问题有关。其余的噪音。请尝试更大的缓冲区。@EricPostischil ah表示歉意。完成了您声明的操作后,时间是0.94秒。@JosephSmith:大概是您在初始化、最终确定和写入中留下的。这将计算并写入空字符串的哈希值。优化#1:不要一次读取1024字节时间。一次读取整个MB。优化#2:让一个线程执行哈希运算,而另一个线程正在读取接下来的几MB数据。
while((bytes=fread(data,1,1024,ftest))!=0)SHA512_更新(&mdContext,data,bytes)
与速度问题有关。其余的噪音。请尝试更大的缓冲区。@EricPostischil ah表示歉意。完成了您所说的时间是0.94秒。@JosephSmith:大概是您在初始化、最终确定和写入中留下的。这将计算并写入空字符串的哈希值。
            FILE *ftest=fopen(hashInBuf, "rb");
            FILE *ftest2=fopen(hashOutBuf, "wt");
            //HASH FUNCTION
            SHA512_Init (&mdContext);
            while ((bytes = fread (data, 1, 1024, ftest)) != 0)
            SHA512_Update (&mdContext, data, bytes);
            SHA512_Final (c,&mdContext);
            for(i = 0; i < SHA512_DIGEST_LENGTH; i++){
              fprintf(ftest2, "%02x", c[i]);
              printf("%02x", c[i]);