社区
C++ 语言
帖子详情
对大文件怎么怎么算MD5呢?
SYSDP
2008-06-12 11:43:37
文件内容有可能大于内存,
在不能一次全都读出的情况下,
C++中有什么好的方法嘛?
谢谢先啊
--
...全文
1462
14
打赏
收藏
对大文件怎么怎么算MD5呢?
文件内容有可能大于内存, 在不能一次全都读出的情况下, C++中有什么好的方法嘛? 谢谢先啊 --
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
myoswin7
2010-11-28
打赏
举报
回复
用md5软件打开对比md5信息 就是验证文件有没有被重新修改过
md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述
myoswin7
2010-11-28
打赏
举报
回复
mark
jungzhang
2010-06-21
打赏
举报
回复
md5不熟悉
yyjshpy
2008-09-28
打赏
举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
mLee79
2008-06-13
打赏
举报
回复
这东西无需验证, 看下MD5的原理自然知道:
$ cat t2.c; gcc -o t2 t2.c `pkg-config openssl --cflags --libs`; ./t2
/***************************************************************/
#include <stdio.h>
#include <openssl/md5.h>
#include <openssl/rand.h>
typedef unsigned char byte;
#define INPUT_LEN (1024+123)
void test1( byte* input , int len , int l1 )
{
int i;
byte md5[16];
MD5_CTX ctx;
MD5_Init( &ctx );
for( ;len >= l1; input += l1 , len -= l1 )
MD5_Update( &ctx , input , l1 );
if( len )
MD5_Update( &ctx , input , len );
MD5_Final( md5 , &ctx );
for( i = 0; i < 16; ++i )
printf( "%02X " , md5[i] );
printf( " : %d\n" , l1 );
}
int main()
{
int l1;
byte input[INPUT_LEN];
RAND_bytes( input , sizeof( input ) );
for( l1 = 1; l1 <= INPUT_LEN; l1 <<= 1 )
test1( input , sizeof( input ) , l1 );
return 0;
}
/***************************************************************/
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 1
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 2
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 4
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 8
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 16
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 32
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 64
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 128
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 256
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 512
AD 84 BB AF 9C E9 5A DD 7D CB 3A 3F C8 E1 63 03 : 1024
SYSDP
2008-06-13
打赏
举报
回复
不管怎么分段,不管怎么读,结果都一样?
用程序验证了嘛?
晨星
2008-06-13
打赏
举报
回复
MD5本来就对输入的长度没有要求。
当然,用法上确实是有要求的。
看看标准就明白了。
haowaj
2008-06-13
打赏
举报
回复
分包啊,每个包用同样结构http://www.haowaj.com
K行天下
2008-06-13
打赏
举报
回复
这东西无需验证, 看下MD5的原理自然知道:
顶!
珍惜生命远离CPP
2008-06-12
打赏
举报
回复
可以读取一部分算一部分
最后将每一部分的结果连接起来再算。
不好指出是不通用。
mLee79
2008-06-12
打赏
举报
回复
谁告诉你分成不同的段来读, 结果不一样 ...
MD5(不光MD5,现在所知的安全散列算法都一样)的结果不受分段方式影响, 只要稀饭你就可以一个字节一个字节的读, 只是慢点而已 ...
shuiyan
2008-06-12
打赏
举报
回复
同一段数据,得出的MD5就是相同的,不然如何验证。
而同一段数据,分成不同的段来读,每段的长度不一样,那么得出的MD5码当然也不一样。
要统一结果,那么就必须统一算法,截取点的要求必须一致。
mLee79
2008-06-12
打赏
举报
回复
MD5本来就是一段一段求的, 啥时候又要一次读入内存了...
SYSDP
2008-06-12
打赏
举报
回复
这样是可以算MD5,可我算的跟别人算的能一样嘛?
通用的方法,每个人人算的都一样,那就好了
MD5
算
法C语言实现
课程名称:C语言实现
MD5
算
法应用知识:C语言基础知识:流程结构,
文件
操作,位运
算
,函数,宏...课程目的:1、练习C语言知识综合运用2、巩固C语言基础知识3、了解
MD5
算
法的基本原理课程特点:1、知识点讲解细致入微2、代码一行一行带大家写,写一行讲一行。不会拿写好的代码讲解。3、保证带大家写出一个完整的有价值的小项目课时目录:1.项目介绍2.命令行参数传递3.获取
文件
字节数4.满组数据处理逻辑5.数据量大于0小于56的情况6.最后一组满组的情况7.最后一组大于56小于648.4个
md5
缓冲器常数9.64元素常数10.16个转换例程常数11.4个缓冲器
算
法12.生成新的
md5
值
算
法13.第一轮生成
md5
值14.新
MD5
值的生成15.写入进
文件
16.bug改正
不用工具,如何快速计
算
文件
的
MD5
?
出于安全考虑,越来越多的
文件
下载网站都利用公示
md5
校验值的方式来校验一个
文件
的数据完整性,那么我们在下载网站
文件
后如何快速计
算
此
文件
的
md5
值呢?大家在各种软件下载站上下载的
文件
,到底有没有被植入木马,是否安全,你心里有底吗?计
算
互联网下载的
文件
,校验
文件
md5
与官网公示
md5
是否一致,防止
文件
被篡改,确保数据的完整性,以免造成不必要的损失。Linux的
md5
sum命令便用于生成和校验
文件
的
md5
值,需要注意的是,
md5
sum检验的是
文件
内容,而不是
文件
名。类似的网址一大把,大家自己百度一下。...
如何查看
文件
的
MD5
值?
MD5
什么是
MD5
?
md5
是一种信息摘要
算
法,是计
算
机广泛使用的杂凑
算
法之一(又译摘要
算
法、哈希
算
法),它可以从一个字符串或一个
文件
中按照一定的规则生成一个特殊的字符串(这个特殊的字符串就被称之为摘要,我理解就是从
文件
中摘一些信息片段加工而来),并且一个
文件
所对应的
MD5
摘要是固定的,当
文件
内容变化后,其
MD5
值也会不一样(虽然理论上来说也有可能会一样,但概率极小),因此,在应用中经常使用
MD5
值来验证一段数据有没有被篡改。 比如,在数据的发送方将原始数据生成出
MD5
值,然后把原始数据连同其
MD5
值一起
.md
文件
是什么?.md如何打开?怎么打开?
可能有些朋友会看到以md为结尾的
文件
,但是不知道用什么打开。下面就来说一下.md
文件
如何打开,markdown
文件
用什么打开。 1、首先来普及一下什么是md
文件
, md全称markdown,markdown也是一种标记语言。 2、md
文件
其实可以用常用的文本编辑器都可以打开,例如记事本、EditPlus、sublime等等。 3、用记事本打开,把markdown
文件
拖到记事本图标上就可以打开 。 4、用 sublime打开方法也一样 ,当然也可以在
文件
上右击选择打
Mac电脑系统如何查看
文件
MD5
信息?
在我们下载了一个比较大的
文件
之后,往往要验证
文件
下载过程是否有损坏或者是否一致,对于macOS系统来说查看dmg安装包、pkg安装
文件
、ISO
文件
、图片
文件
等等
文件
的
MD5
信息其实非常简单,不需要额外下载专门的
md5
验证软件,macOS系统就自带了这样的功能。更多Mac软件点击获取 验证
MD5
教程 1.点击程序坞栏的 启动台 — 其他 — 打开终端。 2.然后输入命令
md5
,
md5
后面加个空格。 3.再把要验证
md5
的
文件
直接拖入终端,然后按回车键运行。 4.等验证完成后就看到
文件
的
C++ 语言
64,700
社区成员
250,492
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章