2011-06-02 49 views
4

Verotel需要一些數據與sha1_hex函數進行散列。究竟是什麼?沒有關於它在整個互聯網的信息。他們說「使用SHA-1散列(十六進制輸出)」。 Sha1與十六進制輸出?似乎我不能我可以在Perl或PHP中生成SHA1嗎?

下面有一個示例重現:

sha1_hex( 「abc777X:描述=產品的一些描述:priceAmount = 51.20:priceCurrency = EUR:shopID = 60678:版本= 1」 )

= 04d87d2718767ea0bef259c436ec63e3cde05be2

回答

9
echo sha1('abc777X:description=some description of product:priceAmount=51.20:priceCurrency=EUR:shopID=60678:version=1'); 

其實,這sha1_hex名爲在PHP sha1()。下面是一個例子,處理你的輸入:http://codepad.org/9fLlr9VJ

0
$ php -r 'var_dump(sha1("abc777X:description=some description of product:priceAmount=51.20:priceCurrency=EUR:shopID=60678:version=1"));' 
string(40) "04d87d2718767ea0bef259c436ec63e3cde05be2" 
$ 

爲我工作。

0

在PHP中,函數是sha1,而不是sha1_hex

7
$ perl -e 'use Digest::SHA qw(sha1_hex); print sha1_hex("abc777X:description=some description of product:priceAmount=51.20:priceCurrency=EUR:shopID=60678:version=1")' 
04d87d2718767ea0bef259c436ec63e3cde05be2 

SHA-1 hash產生20字節的輸出。如果你用十六進制表示這20個字節,你會得到40個字符。

+0

擊敗我23秒! – Ashley 2011-06-02 18:48:10

7

對於Perl:Digest::SHA(從Digest :: SHA1更新)。

perl -MDigest::SHA=sha1_hex -le'print sha1_hex("abc777X:description=some description of product:priceAmount=51.20:priceCurrency=EUR:shopID=60678:version=1")' 
04d87d2718767ea0bef259c436ec63e3cde05be2 
+6

Digest :: SHA1已被棄用。 [Digest :: SHA](http://search.cpan.org/perldoc?Digest::SHA)成爲Perl 5.10的核心;請改用它。 – cjm 2011-06-02 18:50:58

+0

@cjm,我會進行更新以反映優選的核心版本,但我想知道棄用聲明的位置。 – Ashley 2011-06-02 19:43:43

+1

我不認爲它已被正式棄用,但現在Digest :: SHA是一個核心模塊,並且執行Digest :: SHA1所做的一切(還有更多),最好是堅持使用Digest :: SHA。 – cjm 2011-06-02 19:53:22

相關問題