2010-09-03 64 views
0

我想將Perl中的以下內容轉換爲PowerShell,但我被卡在MD5摘要和創建中。將Perl MD5摘要和創建轉換爲PowerShell

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 
+1

幾乎每次我必須回答這個問題時,問題是這個人在每種情況下都提供不同的字符串。 – 2010-09-03 04:35:39

回答

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 
+0

哈哈我在get-hash裏扔了各種各樣的東西,我從來沒有想過要把字符串傳給它。現在嘗試。 – 2010-09-03 01:58:31

+0

該死!我非常有希望。他們不匹配。 Perl給出了:a135923fb8e579463f312b69528d243c – 2010-09-03 02:08:13

+0

perl點語法「str」是什麼。 'str''在這裏做? – 2010-09-03 02:17:37

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 

我不確定是否有辦法將最後兩行合併爲一個。目前,我對我所擁有的東西感到滿意。