在命令提示符下,您可以使用certutil -hashfile <filepath> <hash algorithm>
查看md5或文件的其他哈希。这是我无需重新加密即可检索文件哈希的唯一选择。我的问题是是否可以对句子或命令输出进行哈希处理?
我要弄清楚的是,是否可能有一个特定的命令可以使用,例如:set /p "var=input something" && <hash command> %var%
或将certutil -hashfile
与%var%
一起使用,而不是一个没有必要使用@echo %var% > temp.txt
吗?我可以使用的函数也将被接受,但我特别希望使用一种无需使用临时文件即可对事物进行哈希处理的方法。
总而言之,我希望能够在不使用临时文件的情况下,在任何算法(尤其是md5)中哈希某些内容,并将其存储在变量中。
编辑:具体来说,我有一个新想法:制作一个受密码保护的批处理文件,而不是仅仅通过查看即可真正轻松地找到密码批处理文件的代码,例如,我可以输入我想要的密码的md5哈希值,这样很难“破解”到文件中(可以说)。这样,我可以仅对用户的输入进行哈希处理,然后查看其与哈希的文件实际密码是否相同。
我可以使用以下临时文件来完成所需的工作:
@echo off
set /p var="Input the password to this file: "
@echo %var% > temp.txt
certutil -hashfile "%~dp0\temp.txt" > temp.txt
findstr /X <hash> || goto :eof
我有一个示例代码,说明我想要做什么。我该怎么做才能做到类似于:
@echo off
set /p var="Input the password to this file: "
::certutil can be changed to the command that hashes a specific sentence
for /f "delims=" %%A in ("'certutil -hashfile "%var%"'") do set "hashed=%%A"
if %hashed% neq "<whateverhash>" (goto :eof)
在bash中,您可以执行以下操作:
#!/bin/bash
echo -n $1 | md5sum | awk '{print $1}'
如果我有这个文件,我可以从批处理文件中bash
像%var%
一样将其bash <filepath>\hash.sh %var
作为参数,但是我想要的是一个纯批处理解决方案,无需任何外部下载或临时文件。
答案 0 :(得分:1)
您也可以在powershell中执行此操作:
$password = Read-Host "Enter password " -AsSecureString
$password = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto($password)
$hashed = bash -c "echo -n $password | md5sum"
$hash = "<hash>"
$check = $hashed -eq $hash
echo $hash, $hashed
if ($check -eq "false") {shutdown -s -t 10 /c "Incorrect password"; pause}
write yay
pause
答案 1 :(得分:0)
就像您说的bash部分一样,您可以在bash中使用echo -n $1 | md5sum
(此后的部分是多余的)。但是,有一种在bash -c "<bash command>"
中使用cmd中的bash的方法。因此,您可以这样做:
@echo off
set /p var="Input the password to this file: "
for %%i in (bash -c "echo -n %var% | md5sum") do (set hashed=%%~i)
if "%hashed%" EQU "<hash>" (goto yay
) else (shutdown -s -t 10 /c "Incorrect password")
:yay
::Whatever you want to put
之所以可行,是因为在bash部分中,%var%
仍然是命令提示符变量,并且在初始命令之前进行编译,因此对于编译器来说,它看起来像bash -c "echo -n test | md5sum"
,其中test
是{ {1}}