嗨,想知道是否有人能帮我?我有一段代码来锻炼文件夹的Sha-1,但需要将其转换为Sha-256。
function Get-FolderHash ($folder) {
dir $folder -Recurse | ?{!$_.psiscontainer} | %{[Byte[]]$contents += [System.IO.File]::ReadAllBytes($_.fullname)}
$hasher = [System.Security.Cryptography.SHA1]::Create()
[string]::Join("",$($hasher.ComputeHash($contents) | %{"{0:x2}" -f $_}))
}
Get-FolderHash out
如果有人有任何技巧的话,我还需要在其他两种编程语言中获得同等的东西。谢谢
几个想法:
- 许多功能在PowerShell中本机可用(例如使用
Get-FileHash
( - 我建议不要对语言结构使用"简短形式",即使用
where
代替?
,使用foreach
代替%
。PSScriptAnalyzer甚至更严格,建议使用更详细的Where-Object
形式,这也是一个选项
您可以指定SHA-256作为Get-FileHash的算法。
以下是一个涵盖PowerShell 中上述要点的示例
function Get-FolderHash ($folder) {
Get-ChildItem $folder -Recurse | Where {!$_.PSIsContainer} | ForEach {
Get-FileHash -Algorithm SHA256 "$($_.FullName)" | Select Hash, Path
}
}
这将输出一个表,显示计算出的哈希和路径。
我会让其他人更熟悉Python&Java在那里提供帮助。