首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SHA-1、RFC3174和RFC4634

SHA-1、RFC3174和RFC4634
EN

Stack Overflow用户
提问于 2011-01-21 18:24:14
回答 1查看 327关注 0票数 2

对社区来说是新的,但对编程来说不是新的。

我一直在尝试建立/运行一组哈希函数,但我成功了。然而,我发现了一些奇怪的结果,还不能确定。RFC4634包含一个针对SHA-1和SHA-2系列的C实现,它还可以接受正在传递的文件进行散列。RFC3174包含一个C实现,但不处理文件流。我一直在使用RFC4634的C实现来验证文件,但是当我将它们与SHA-1提供的散列进行比较时,验证过程返回了不相似的结果。

你知道原因是什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-21 18:32:53

你有没有检查你打开的文件是ASCII模式还是二进制模式?行结束转换可以在计算散列之前执行。

更新:

我刚刚编译了RFC4634 shatest并尝试了一个示例文本文件。只要没有换行符,所有工具都会同意。插入换行符后,结果将取决于:如果文本文件使用CR和LF (DOS模式),则shatest将生成不同的结果。如果行尾只是LF (UNIX),它仍然与其他工具一致。

更新2:

在RFC4634的文件shatest.c中,在函数hashfile(...)中,将fopen设置为二进制模式:

代码语言:javascript
复制
FILE *hashfp = (strcmp(hashfilename, "-") == 0) ? stdin :
        fopen(hashfilename, "rb");
/*                            ^ HERE */
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4757655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档