找回密码
 加入
搜索
查看: 1814|回复: 4

[系统综合] 如何用AU3验证一个文件的SHA1和CRC32?

  [复制链接]
发表于 2012-3-19 13:24:01 | 显示全部楼层 |阅读模式
本帖最后由 Windows8 于 2012-3-19 13:25 编辑

如题,如果用
_SHA1("C:\1.TXT")
_CRC32("C:\1.TXT")
_SHA1(FILEREAD("C:\1.TXT"))
_CRC32(FILEREAD("C:\1.TXT"))
检测出来的校验值是0x多少多少的,与HASH检验的完全不同。
请问版主,如何用AU3实现HASH的这些功能呢?
发表于 2012-3-27 14:27:44 | 显示全部楼层
我也想知道,谢谢楼主
发表于 2012-3-27 15:11:40 | 显示全部楼层
帮助文档里有

#include "ACN_HASH.au3"

Local $msgstr = "notepad2.exe" & @CRLF
$msgstr &= "Md5:  " & Check_Md5(@ScriptDir & "\notepad2.exe") & @CRLF
$msgstr &= "Sha1:  " & Check_Sha1(@ScriptDir & "\notepad2.exe") & @CRLF
$msgstr &= "Crc32:  " & Check_Crc32(@ScriptDir & "\notepad2.exe")
MsgBox(0, "", $msgstr)


Func Check_Md5($FileName)
    Local $BufferSize = 0x20000
    Local $FileHandle = FileOpen($Filename, 16)
    Local $MD5CTX = _MD5Init()
    Local $i
    For $i = 1 To Ceiling(FileGetSize($FileName) / $BufferSize)
        _MD5Input($MD5CTX, FileRead($FileHandle, $BufferSize))
    Next
    Local $Hash = _MD5Result($MD5CTX)
    FileClose($FileHandle)
    Return $Hash
EndFunc

Func Check_Sha1($FileName)
    Local $BufferSize = 0x20000
    Local $FileHandle = FileOpen($FileName, 16)
    Local $SHA1CTX = _SHA1Init()
    Local $i
    For $i = 1 To Ceiling(FileGetSize($FileName) / $BufferSize)
        _SHA1Input($SHA1CTX, FileRead($FileHandle, $BufferSize))
    Next
    Local $Hash = _SHA1Result($SHA1CTX)
    FileClose($FileHandle)
    Return $Hash
EndFunc

Func Check_Crc32($FileName)
    Local $BufferSize = 0x20000
    Local $FileHandle = FileOpen($Filename, 16)
    Local $CRC32 = 0
    Local $i
    For $i = 1 To Ceiling(FileGetSize($Filename) / $BufferSize)
        $CRC32 = _CRC32(FileRead($FileHandle, $BufferSize), BitNot($CRC32))
    Next
    FileClose($FileHandle)
    Return Hex($CRC32, 8)
EndFunc
发表于 2012-3-27 15:16:43 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-20 17:44 , Processed in 0.076326 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表