Преобразование Perl MD5 Digest и создание в PowerShell - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь преобразовать следующее в 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 ]

3 голосов
/ 03 сентября 2010

В Расширения сообщества PowerShell имеется командлет Get-Hash. Попробуйте.

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 голосов
/ 03 сентября 2010

Хорошо, это в значительной степени благодаря направлению Кейта Хилла. Имейте в виду, в этом случае я нашел, что лучше указывать [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

Я не уверен, есть ли способ объединить две последние строки в одну. На данный момент я доволен тем, что у меня есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...