将 OPENSSL SHA1() 函数的结果放入 ARRAY 中
我正在开发一个项目,遇到一些问题。我进行了搜索,但找不到任何满意的答案。
我有一个由 0 和 1 组成的巨大文件。 我将 1024(我的块)位放入数组块中,然后应用在 openssl/sha.h 库中实现的 SHA1() 函数。
字符块[1024]; while((fgets(块,1024,fp))!=NULL)
我的意图是我的文件可以由相同的块组成,并且我想计算有多少块是相同的。
在我的数组块中获得 1024 位后,我应用:
unsigned char obuf[20];
SHA1(块,strlen(块),obuf); 函数来获取哈希函数的结果。
这里 SHA1 函数是如何工作的
unsigned char *SHA1(const unsigned char *d, unsigned long n,unsigned char *md);
之后我想将我的哈希函数结果存储在一个数组中。在我读取所有文件后,我将使用这个数组来比较是否有相同的哈希结果,这样我就可以开始我的项目了。但是我卡在这一点上。我无法将结果 obuf 放入数组中。
我试过 : 内存复制() 字符串复制() 或者只是 myarray[N][20]=obuf;等等,
如果您建议某种方式,我会很高兴谢谢。
所以最大的问题是找到有多少哈希值是唯一的?
i'm working on a project and i have some problems.I have searched but can not find any satisfied answer.
i have a huge file consists of 0 and 1s.
i'm getting 1024 (my chunk) bits into an array chunk and after that i apply SHA1() function which is implemented in openssl/sha.h library.
char chunk[1024];
while((fgets(chunk,1024,fp))!=NULL)
My intention is that my file can consist of same chunks and i want to count how many chunks are same.
After i get 1024 bits in my array chunk i apply :
unsigned char obuf[20];
SHA1(chunk,strlen(chunk), obuf);
function to get the result of the hash function.
here how SHA1 function works
unsigned char *SHA1(const unsigned char *d, unsigned long n,unsigned char *md);
after that i want to store my hash function result in an array.After i read all of my file, i'll use this array to compare if there are same hash results or not, by this way i can start my project.But i stuck in this point. i can not put the result obuf to an array.
i tried :
memcopy()
strcopy()
or just myarray[N][20]=obuf; etc.
if you suggest some way, i'll be happy thanks.
so the biggest problem is that finding the how many hashes are unique ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,您说输入文件的块大小为 1024 - 但是这一行最多将从文件中读取 1023 个字符(它使用一个空格作为空终止符):(
我认为
fread
可能更接近您在这里尝试做的事情)其次,您可以执行以下操作:
Firstly, you say that your chunks of input file are of size 1024 - however this line will read at most 1023 characters from your file (it uses one space for the null terminator):
(I think
fread
might well be closer to what you're trying to do here)Secondly, you can just do something like: