life999 发表于 2025-1-28 14:17:02

AU3有MD5校验的进度条显示吗。

AU3有MD5校验的进度条显示吗。

qq413774005 发表于 2025-1-28 15:58:16

本帖最后由 qq413774005 于 2025-2-5 10:49 编辑

参见下面的发布内容

qq413774005 发表于 2025-1-28 15:58:33

本帖最后由 qq413774005 于 2025-2-5 10:50 编辑


参见下面的发表内容

life999 发表于 2025-1-28 22:31:17

qq413774005 发表于 2025-1-28 15:58
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=C:\windows\System32\SHELL32.dll|-45
#PRE_UseU ...

感谢哥们回答,,不是想要字符串的MD5,是想要文件的MD5 进度条显示

saromman 发表于 2025-2-3 12:38:59

我是来学习的,MD5不能解密啊

life999 发表于 2025-2-3 22:38:25

补充一下,这个软件是如何获取文件的MD5进度条的呢


lpxx 发表于 2025-2-5 10:44:16

本帖最后由 lpxx 于 2025-2-5 10:46 编辑

没人帮你啊。:face (1):
#include <GUIConstantsEx.au3>
#include <Crypt.au3>

$sPath = FileOpenDialog('打开', @DesktopDir, 'All (*.*)', 1)
If @error Then Exit
$hGui = GUICreate('MD5校验的进度条显示', 350, 110)
$iProgressBar = GUICtrlCreateProgress(10, 10, 330, 20)
$iButton = GUICtrlCreateButton('开始', 250, 50, 90, 28)
$iStatusBar = GUICtrlCreateLabel('状态', 5, 110 - 20, 340, 17)
GUISetState()
While 1
    Switch GUIGetMsg()
      Case $iButton
            $bHash = _HashFile_PrgBar($sPath, $CALG_MD5, $iProgressBar)
            If @error Then
                GUICtrlSetData($iStatusBar, '@error = ' & @error)
            Else
                GUICtrlSetData($iStatusBar, $bHash)
            EndIf
      Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _HashFile_PrgBar($sPath, $iALG_ID, $iProgressBar)
    Local $hFile, $hCryptHash = 0, $bTempData
    _Crypt_Startup()
    $hFile = FileOpen($sPath, 16)
    If $hFile = -1 Then Return SetError(1, 0, _Error())
    $sFileSize = FileGetSize($sPath)
    If $sFileSize > 1048576 Then
      $SizeRead = Ceiling($sFileSize / 100)
      For $i = 1 To 100
            $bTempData = FileRead($hFile, $SizeRead)
            If @error = -1 Then ExitLoop
            If $i = 100 Then
                $fFinal = True
            Else
                $fFinal = False
            EndIf
            $hCryptHash = _Crypt_HashData($bTempData, $iALG_ID, $fFinal, $hCryptHash)
            If @error Then Return SetError(1, 0, _Error())
            GUICtrlSetData($iProgressBar, $i)
      Next
    Else
      $hCryptHash = _Crypt_HashData($bTempData, $iALG_ID, True)
      If @error Then Return SetError(1, 0, _Error())
      GUICtrlSetData($iProgressBar, 100)
    EndIf
    FileClose($hFile)
    _Crypt_Shutdown()
    Return SetError(0, 0, $hCryptHash)
EndFunc ;==>_HashFile_PrgBar

Func _Error()
    _Crypt_Shutdown()
    Return 0
EndFunc ;==>_Error

qq413774005 发表于 2025-2-5 10:47:40

本帖最后由 qq413774005 于 2025-2-5 10:51 编辑

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=C:\windows\System32\SHELL32.dll|-27
#PRE_UseUpx=n
#PRE_UseX64=n
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Crypt.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>;进度条

Local $bAlgorithm = $CALG_SHA1

GUICreate("Hash File", 455, 100)
Local $iInput = GUICtrlCreateInput(@ScriptFullPath, 5, 5, 200, 20)
Local $iBrowse = GUICtrlCreateButton("...", 210, 5, 35, 20)
Local $iCombo = GUICtrlCreateCombo("", 250, 5, 100, 20, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "MD2|MD4|MD5|SHA1", "MD5")
Local $iCalculate = GUICtrlCreateButton("生成", 375, 5, 65, 65)
Local $input1 = GUICtrlCreateInput("", 5, 50, 350, 25)
$progressbar1 = GUICtrlCreateProgress(5, 85, 350, 10);进度条

;Local $iHashLabel = GUICtrlCreateLabel("Hash Digest", 5, 50, 350, 25)
GUISetState(@SW_SHOW)

_Crypt_Startup() ; To optimize performance start the crypt library.

While 1
      Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $iBrowse
                        Local $sFilePath = FileOpenDialog("打开一个文件", "", "所有文件(*.*)") ; Select a file to find the hash.
                        If @error Then
                              ContinueLoop
                        EndIf
                        GUICtrlSetData($iInput, $sFilePath) ; Set the inputbox with the filepath.
                        GUICtrlSetData($input1, "Hash Digest") ; Reset the hash digest label.

                Case $iCombo ; Check when the combobox is selected and retrieve the correct algorithm.
                        Switch GUICtrlRead($iCombo) ; Read the combobox selection.
                              Case "MD2"
                                        $bAlgorithm = $CALG_MD2

                              Case "MD4"
                                        $bAlgorithm = $CALG_MD4

                              Case "MD5"
                                        $bAlgorithm = $CALG_MD5

                              Case "SHA1"
                                        $bAlgorithm = $CALG_SHA1

                        EndSwitch

                Case $iCalculate
                        Local $sRead = GUICtrlRead($iInput)
                        If StringStripWS($sRead, 8) <> "" And FileExists($sRead) Then ; Check there is a file available to find the hash digest
                              Local $bHash = _Crypt_HashFile($sRead, $bAlgorithm) ; Create a hash of the file.
                              GUICtrlSetData($input1, StringTrimLeft($bHash, 2)) ; Set the hash digest label with the hash data.
                        EndIf
                        GUICtrlSetData($progressbar1, 100);进度条
                        ;Sleep(500)
                        ;GUICtrlSetData($progressbar1, 0);进度条
      EndSwitch
WEnd

_Crypt_Shutdown() ; Shutdown the crypt library.

life999 发表于 2025-2-5 13:35:48

qq413774005 发表于 2025-2-5 10:47


感谢回复。。你这个没有进度条的过程,只有到100%的结果,,我最后找到了一个命令可以读取sha1的进度条 用7z命令 7z h -scrcsha1 C:\download\test.exe
页: [1]
查看完整版本: AU3有MD5校验的进度条显示吗。