2009-03-05 18 views
2

sha-512'yi kullanarak hmac'ı hesaplamaya çalışıyorum.Python'da hmac için neden yanlış sonuçlar aldım ama Perl değil?

perl'de kodu:

9656975ee5de55e75f2976ecce9a04501060b9dc22a6eda2eaef638966280182 
477fe09f080b2bf564649cad42af8607a2bd8d02979df3a980f15e2326a0a22a 
yanlış karma verir

import hashlib, hmac 

print hmac.new("\x0b"*20, "Hi There", hashlib.sha512).hexdigest() 

:

use Digest::SHA qw(hmac_sha512_hex); 

$key = "\x0b"x20; 
$data = "Hi There"; 

$hash = hmac_sha512_hex($data, $key); 
print "$hash\n"; 

ve

87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cde 
daa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854 

Python versiyonunun doğru karmaşaya verir

Python sürümünün neden yanlış karımı verdiğine dair herhangi bir fikir var mı?

Düzenleme:
sürümü
Python 2.5.1 olduğunu (R251: 54863 2009 13 Ocak, 10:26:13)
[GCC 4.0.1 (Apple Inc. 5465 build)] darwin

üzerinde
+0

ait MacPorts versiyonu Lütfen Sürüm bilgisi –

+0

sağlamak ... Bu gerçekten garip bir sürüm dizesi. 2.5.1'in benim (eski) 2.5.2'den daha yeni * yıl * mı? Bu gerçekten sıra dışı. Belki de 2.5.4'e (herhangi bir paketin kırılmaması gereken) güncellemeyi deneyin. – kquinn

cevap

9

sorun olduğunu tahmin doğru karmaşaya olsun evet gerçekten de - bu python2.5 Leopard sürümünü görünüyor Kırık olanı. Bu sürümü Running Penryn'in tabanlı MBP üzerinde kaçak altında

...

$ **uname -a** 
Darwin lizard-wifi 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 
[email protected]:~$ **which python** 
/usr/bin/python 

[email protected]:~$ python 
Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import hashlib, hmac 
>>> print hmac.new("\x0b"*20, "Hi There", hashlib.sha512).hexdigest() 
9656975ee5de55e75f2976ecce9a04501060b9dc22a6eda2eaef638966280182477fe09f080b2bf564649cad42af8607a2bd8d02979df3a980f15e2326a0a22a 
>>> 

Ve OS Leopard yüklü sonra python2.5

$ /opt/local/bin/python2.5 
Python 2.5.4 (r254:67916, Feb 3 2009, 21:40:31) 
[GCC 4.0.1 (Apple Inc. build 5488)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import hashlib, hmac 
>>> print hmac.new("\x0b"*20, "Hi There", hashlib.sha512).hexdigest() 
87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854 
>>> 
0

Hangi versiyon Python? Dizeler, Python 3'teki Unicode'dir. Bu bir Unicode sorunu mu?

+0

Python 2.5.1, varsayılan olarak OS X 10.5 inanıyorum. type ("a") str, type (u "a"), bu bir şey söylerse unicode is – cobbal

1

Sonuçlarınızı burada kopyalayamıyorum. Python 2.5 kullanarak IDLE olarak:

Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. 

... 

IDLE 1.2.2  
>>> import hashlib, hmac 
>>> print hmac.new("\x0b"*20, "Hi There", hashlib.sha512).hexdigest() 
87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854 
+0

Burada aynı sonuç, aynı PHP'de de aynıdır. – flussence

0

piton 2.5.2 altında ben
eski sürüm

+0

Lütfen başka bir yanıt eklemek yerine orijinal sorunuzu güncelleyin. :) –

İlgili konular