Calculate SHA1 or MD5 hash over a set of files
<?xml version="1.0" encoding="utf-8"?> <xsharper ID="HASH" xmlns="http://www.xsharper.com/schemas/1.0"> <versionInfo value="Calculate SHA1 or MD5 over a set of files. Each file is calculated individually." /> <usage options="ifHelp ifNoArguments default" lineSuffix=" [switches]" /> <param count="multiple" value="Files to hash (- = stdin)" name="files" description="file [file...]" required="true" /> <param switch="md5" count="none" default="0" unspecified="1" value="Calculate MD5" description="md5" typename="bool" /> <param switch="sha256" count="none" default="0" unspecified="1" value="Calculate SHA256" description="md5" typename="bool" /> <param switch="sha1" count="none" default="1" unspecified="1" value="Calculate SHA1 (default)" description="sha1" typename="bool?" /> <?h using System.Security.Cryptography; ?> <foreach in="${files}"> <set hash="${= $md5 ? MD5.Create() : null }" /> <set hash="${= $sha256 ? SHA256.Create() : $hash }" /> <set hash="${= $hash ?? SHA1.Create() }" /> <set stream="${= ($=="-")?System.Console.OpenStandardInput():c.OpenStream($)}" /> <try> <print>${=.ToHex($hash.ComputeHash($stream)).ToUpper()}</print> </try> <finally> <eval>$stream.Dispose();</eval> </finally> </foreach> </xsharper>