Chinaunix

标题: 在unix下如何得到文件的最好修改时间? [打印本页]

作者: wuyanhui328    时间: 2009-05-31 15:18
标题: 在unix下如何得到文件的最好修改时间?
我有一个文件,是在windows下改完传到unix下的,我想通过在unix下判断文件的最好修改时间来控制文件是否中途被修改过
请问在unix下如何得到文件的最好修改时间(精确到毫秒),不要文件的创建时间,帮忙啊~
作者: MMMIX    时间: 2009-05-31 15:30
原帖由 wuyanhui328 于 2009-5-31 15:18 发表
请问在unix下如何得到文件的最好修改时间(精确到毫秒),不要文件的创建时间,帮忙啊~

嘛是“最好修改时间”?Unix 一般的文件系统只保留最后修改时间,最后访问时间,和 i-node 最后修改时间,可以通过 stat(2) 或者 fstat(2) 访问。

BTW,创建时间你想得到都得不到。

[ 本帖最后由 MMMIX 于 2009-5-31 15:32 编辑 ]
作者: prolj    时间: 2009-05-31 15:35
精确到毫秒.......
作者: gooderfeng    时间: 2009-05-31 15:36
毫秒啊,不知道了,帮定
不过说实话这个毫秒看起来没有太大意义。
stat函数可以拿到秒的,毫秒真不知道在哪里啊。
作者: MMMIX    时间: 2009-05-31 15:48
原帖由 gooderfeng 于 2009-5-31 15:36 发表
stat函数可以拿到秒的,毫秒真不知道在哪里啊。

压根就没有。
作者: gooderfeng    时间: 2009-05-31 15:54
毫秒啊,我觉得真的没必要,不知道这个需求哪里来的哈哈。
也许在kernel里面能拿到也不一定。
作者: wuyanhui328    时间: 2009-05-31 16:01
各位大侠们,
是最后时间,呵呵,打错了

我的要求是这样的:
文件在windows下修改完毕后,传到unix下进行处理,这中间可能需要1天或2天,我为了避免文件中途被篡改,
所以我在windows保存完毕后,记录时间,精确到毫秒,更准确呀
在unix下进行处理的时候,输入我在windows记录的时间进行比对啊

我就是这个思路呀,大侠们
作者: gooderfeng    时间: 2009-05-31 16:02
还是得md5吧,用时间不好的,可以随意改啊。
作者: yeehya    时间: 2009-05-31 16:06
直接把windows的最后修改时间写在文件开始处完了...
或者设计个文件头.包括时间是否处理==
作者: wuyanhui328    时间: 2009-05-31 16:06
就是怕改才精确到毫秒呀

md5能加密 文本文件吗
我传的是个文本文件
作者: yeehya    时间: 2009-05-31 16:07
标题: 回复 #8 gooderfeng 的帖子
恩.这也是我的第一反映
作者: wuyanhui328    时间: 2009-05-31 16:08
原帖由 yeehya 于 2009-5-31 16:06 发表
直接把windows的最后修改时间写在文件开始处完了...
或者设计个文件头.包括时间是否处理==




那修改中间某个内容,不还是校验不了吗
作者: yeehya    时间: 2009-05-31 16:14
如何同步windows和unix时间误差到毫秒级别???
作者: langue    时间: 2009-05-31 16:15
根本不可行。
你把文件传输过去,最后修改时间已经被更新了。
数字签名是一个不错的选择,别的方法就是瞎折腾。
作者: wuyanhui328    时间: 2009-05-31 16:16
原帖由 yeehya 于 2009-5-31 16:14 发表
如何同步windows和unix时间误差到毫秒级别???




在windows保存的时候记录当前时间(毫秒级),然后在unix下操作的时候,输入windows下的时间和unix下这个文件的最后修改时间应该是一样的呀
作者: wuyanhui328    时间: 2009-05-31 16:21
md5 有c的代码吗
在unix下怎么校验啊
作者: gooderfeng    时间: 2009-05-31 16:21
这个东西看起来都是用md5来处理,除非md5的速度是主要问题,不然其他的都没用,防传改最简单的办法应该就是md5了。
如果文件巨大,md5的速度是个问题。 没看linux release放出来的时候都带md5的哈哈。
作者: gooderfeng    时间: 2009-05-31 16:22
man  md5sum  或者 openssl,或者自己找的md5的实现都行。
作者: wuyanhui328    时间: 2009-05-31 16:40
谢谢啊,那我还是放弃这个念头吧
作者: bittertea    时间: 2009-06-01 00:48
防篡改一般采取

1. MD5 / SHA1 等哈希算法
OPENSSL相关API:

openssl/md5.h
openssl/sha.h

MD5_Init
MD5_Update
MD5_Final

SHA1_Init
SHA1_Update
SHA1_Final
......

通过对文件内容直接做摘要得到DIG1, 随内容发送给接收方, 接收方收到后同样方法计算DIG2, 若DIG1 != DIG2则被篡改

2. 使用基于Key的 HMAC_哈希, 如HMAC_MD5/SHA1,
key保密只由验证者和文本发送方共享, 发送方计算HMAC摘要DIG1=HMAC_摘要算法(KEY, 内容), 随内容一起发送给接收方,
接收方收到后同样方法计算DIG2, 若DIG1 != DIG2则被篡改


3. 数字签名: 先用MD5等哈希算法计算摘要值DIG, 然后用私钥加密该摘要值SIG, 验证者收到后用公钥解密SIG, 若解密失败则被篡改,
若解密成功得到DIG1, 然后同样方法计算摘要DIG2, 若DIG1 != DIG2则被篡改

1,2,3安全性/复杂度由低到高
作者: gawk    时间: 2009-06-01 08:48
原帖由 bittertea 于 2009-6-1 00:48 发表
防篡改一般采取

1. MD5 / SHA1 等哈希算法
OPENSSL相关API:

openssl/md5.h
openssl/sha.h

MD5_Init
MD5_Update
MD5_Final

SHA1_Init
SHA1_Update
SHA1_Final
......

通过对文件内容直接做 ...

学习




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2