将Perl MD5 Digest和Create转换为PowerShell

时间:2010-09-03 01:08:40

标签: c# .net perl powershell

我正在尝试将Perl中的以下内容转换为PowerShell,我被困在MD5 Digest和Create上。

timestamp=1283473470
key='this-is-my-key'
secret='secret'
perl -e  "use Digest::MD5 qw(md5 md5_hex); print md5_hex('$key' . '$secret' . $timestamp);"

出于测试目的,我将时间戳设置为静态数字。这样我可以比较Perl所说的和PowerShell所说的内容。我尝试了一些MD5和[System.Security.Cryptography.HashAlgorithm]尝试,但到目前为止,我只是把自己变得更加困惑了。

在Perl ....

> perl -e  "use Digest::MD5 qw(md5 md5_hex); print md5_hex('this-is-my-key' . 'secret' . '1283473470');"
> a135923fb8e579463f312b69528d243c

在PowerShell中

>_ 'this-is-my-key.secret.1283473470' | Get-Hash


Algorithm: MD5


Path       :
HashString : 04BF4CA4BF3E34C83F0B11970205580D

2 个答案:

答案 0 :(得分:3)

PowerShell Community Extensions中有Get-Hash个cmdlet。试一试。

PS> 'this-is-my-key.secret.1283473470' | Get-Hash


Algorithm: MD5


Path       :
HashString : 04BF4CA4BF3E34C83F0B11970205580D

或者如果字符串需要解释为ASCII:

PS> $foo = 'THIS-is-my-keysecret1283473470'
PS> $foo.ToLower() | Get-Hash -StringEncoding ascii


Algorithm: MD5


Path       :
HashString : A135923FB8E579463F312B69528D243C

答案 1 :(得分:0)

这是好的,很大程度上归功于基思希尔的方向。 请注意,在这种情况下,我发现最好在任何地方指定[string],这或多或少只是基于一致,它只需要在两行中指定。

[string]$timestamp=1283473470
[string]$key='this-is-my-key'
[string]$secret='secret'
[string]$string=$key+$secret+$timestamp
[string]$CAPhash=$string | Get-Hash -StringEncoding ascii
[string]$hash=$CAPhash.ToLower()
$hash

我不确定是否有办法将最后两行合并为一条。目前我对自己拥有的东西很满意。