Batch file 有没有一种方法可以在不使用临时文件的情况下散列命令输出?

Batch file 有没有一种方法可以在不使用临时文件的情况下散列命令输出?,batch-file,cmd,hash,Batch File,Cmd,Hash,在命令提示符下,您可以使用certutil-hashfile查看文件的md5或其他散列。这是我能找到的唯一一个在不加密文件的情况下检索文件哈希的选项。我的问题是,是否有办法散列句子或命令输出 我想弄清楚的是,是否有一个特定的命令可以在这种情况下使用,比如:set/p“var=input something”&&&%var%,或者使用certutil-hashfile和%var%来代替没有必要使用@echo%var%>temp.txt的文件?一个我可以使用的函数也会被接受,但我只是特别想要一个不使

在命令提示符下,您可以使用
certutil-hashfile
查看文件的md5或其他散列。这是我能找到的唯一一个在不加密文件的情况下检索文件哈希的选项。我的问题是,是否有办法散列句子或命令输出

我想弄清楚的是,是否有一个特定的命令可以在这种情况下使用,比如:
set/p“var=input something”&&&%var%
,或者使用
certutil-hashfile
%var%
来代替没有必要使用
@echo%var%>temp.txt的文件?一个我可以使用的函数也会被接受,但我只是特别想要一个不使用临时文件的散列方法


总之,我希望能够能够在任何算法(尤其是md5)中散列某些内容,而不使用临时文件并将其存储在变量中

编辑:具体来说,我想做的是我有了一个新的想法,制作一个受密码保护的批处理文件,在这个文件中,我不需要仅仅通过查看批处理文件的代码就可以很容易地找到密码,而是可以对我想要的密码进行md5哈希,这样就很难找到密码“中断”到文件中(排序为说话)。这样我就可以对用户的输入进行散列,然后查看它是否与散列后的文件实际密码相同

我可以通过以下方式使用临时文件完成我想要的任务:

@echo关闭
set/p var=“为此文件输入密码:”
@echo%var%>temp.txt
certutil-hashfile“%~dp0\temp.txt”>temp.txt
findstr/X | |转到:eof
我有一个关于我想做什么的示例代码。我想做什么类似于:

@echo关闭
set/p var=“为此文件输入密码:”
::certutil可以更改为散列特定句子的命令
对于/f“delims=“%”中的%%A(“'certutil-hashfile”%var%%“”),请设置“hashed=%%A”
如果%n哈希为%neq“”(转到:eof)
在bash中,您可以使用以下工具执行此操作:

!/bin/bash
echo-n$1 | md5sum | awk'{print$1}'

如果我有这个文件,我可以从批处理文件中
bash
它,参数为
%var%
bash\hash.sh%var
但是我想要的是一个没有任何外部下载或临时文件的纯批处理解决方案。

就像你在bash部分所说的,你可以在bash中使用
echo-n$1 | md5sum
(后面的部分是多余的)。但是,有一种方法可以在cmd中使用bash,即使用
bash-c”“
。因此您可以执行以下操作:

@echo关闭
set/p var=“为此文件输入密码:”
对于%%i in(bash-c“echo-n%var%| md5sum”)do(设置哈希=%%~i)
如果“%hashed%”eq“”(转到yay
)其他(关机-s-t 10/c“密码不正确”)
:耶
你想放什么就放什么

这是因为在bash部分,
%var%
仍然是一个命令提示符变量,并且在初始命令之前编译,因此对于编译器来说,它看起来像是
bash-c“echo-n test | md5sum”
其中
test
%var%
,您也可以在powershell中执行此操作:

$password=读取主机“输入密码”-AsSecureString
$password=[Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)
$password=[Runtime.InteropServices.Marshal]::PtrToStringAuto($password)
$hashed=bash-c“echo-n$password | md5sum”
$hash=“”
$check=$hashed-eq$hash
echo$hash,$hash
如果($check-eq“false”){shutdown-s-t 10/c“密码不正确”;暂停}
写呀
暂停

您想用这个具体实现什么?这可能会使您更容易尝试并找到解决方案谢谢您的提问,我在问题中添加了更多信息。